存储大量文本入数据库的几个问题
win2003+sql2000
问题:
1,在textbox2中输入几百个字,按添加按钮之后,只是添加了大约一两百个入数据库,content字段我试过用char(5000),varchar(5000),text(16),ntext(16)这几种类型,但还是不行。
2,不能正常显示html代码。假如我输入"<font color=red>sdaf</font>",显示的时候仍然是显示这些代码而非红色
请帮我看看,谢谢
相关代码:
Sub Btn_Add_Click(sender As Object, e As EventArgs)
Message.Innerhtml=""
if page.IsValid
dim ds as dataset
dim MyCommand as sqlCommand
dim strtemp as string
dim InsertCmd as string="insert into news(rq,content) values(@rq,@content)"
MyCommand=new SqlCommand(InsertCmd,MyConnection)
MyCommand.parameters.add(new SqlParameter("@rq",SqlDbType.NVarChar,8))
MyCommand.Parameters("@rq").value=textbox1.value
MyCommand.Parameters.add(new SqlParameter("@content",SqlDbType.NVarChar,100))
strtemp=replace(textbox2.value," "," ")
strtemp=replace(strtemp,chr(13),"<br>")
MyCommand.Parameters("@content").value=strtemp
MyCommand.Connection.Open()
try
MyCommand.ExecuteNonQuery()
Message.Innerhtml="<b>已添加记录</b><br>" & InsertCmd.toString
catch ex as sqlexception
if ex.number=2627
message.Innerhtml="错误:已存在具有相同主键的记录"
else
message.Innerhtml="错误:未能添加记录,请确保正确填写了字段"
end if
Message.style("color")="red"
end try
MyCommand.Connection.close()
end if
BindGrid()
End Sub
×××××××××××××××××××××××××××××××××××××
<p>
日期:<input id="textbox1" type="text" runat="server" />
</p>
<p>
动态:<textarea id="textbox2" style="WIDTH: 250px; HEIGHT: 62px" rows="3" cols="30" runat="server"></textarea>
</p>
<p>
<asp:Button id="Btn_Add" onclick="Btn_Add_Click" runat="server" Text="添加"></asp:Button>
</p>
<ASP:DataGrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" DataKeyField="n_id" Font-Names="Verdana" Width="800px" BackColor="#CCCCFF" BorderColor="Black" CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" OnEditCommand="MyDataGrid_Edit" OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update" OnDeleteCommand="MyDataGrid_Delete" AllowSorting="True" OnSortCommand="MyDataGrid_Sort">
<HeaderStyle backcolor="#AAAADD"></HeaderStyle>
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
<asp:BoundColumn DataField="n_id" SortExpression="n_id" ReadOnly="True" HeaderText="ID"></asp:BoundColumn>
<asp:BoundColumn DataField="rq" SortExpression="rq" HeaderText="日期"></asp:BoundColumn>
<asp:BoundColumn DataField="content" HeaderText="内容"></asp:BoundColumn>
</Columns>
</ASP:DataGrid>
问题点数:20、回复次数:10Top
1 楼gshope(北京.Net)回复于 2003-12-03 16:45:48 得分 0
一个汉字是两个字节,Top
2 楼gOODiDEA(无语)回复于 2003-12-03 17:10:53 得分 10
MyCommand.Parameters.add(new SqlParameter("@content",SqlDbType.NVarChar,strtemp.Length))
<%@ Page ValidateRequest="false"%>Top
3 楼chentaoyql(新的一天)回复于 2003-12-03 17:13:58 得分 0
2,不能正常显示html代码。假如我输入"<font color=red>sdaf</font>",显示的时候仍然是显示这些代码而非红色
老大 你没有使用UBB 代码 是不会有你要的效果的Top
4 楼okok999(渴望)回复于 2003-12-03 17:20:50 得分 0
用freetext控件Top
5 楼nirvana791103(凤凰涅磐)回复于 2003-12-04 09:37:21 得分 0
to chentaoyql(chentaoyql)
怎么用UBB代码,举个例子?Top
6 楼dong1dong1()回复于 2003-12-04 09:43:02 得分 0
建议用存储过程做。Top
7 楼dong1dong1()回复于 2003-12-04 09:44:22 得分 10
strtemp=replace(textbox2.value," "," ")
strtemp=replace(strtemp,chr(13),"<br>")
最好不要在INSERT的时候转换,待输出时转也不迟
Top
8 楼lvzm(lzm)回复于 2003-12-04 09:48:03 得分 0
问题1:文本内容字段类型nvarchar 4000即可,绝对没有问题。
问题2:最好采用Css来修饰,这样代码简单易读,而且避免大量的属性设置,节省大量时间。Top
9 楼nirvana791103(凤凰涅磐)回复于 2003-12-04 10:49:19 得分 0
谢谢dong1dong1()
照你的做法,现在的数据好看多了
Top
10 楼nirvana791103(凤凰涅磐)回复于 2003-12-04 11:03:04 得分 0
to lvzm(lzm)
1,nvarchar(4000)是不是只能容纳4000个字符?varchar和nvarchar有什么区别吗?看了一下帮助文档,unicode跟非unicode有什么分别?
2,怎么用css,给个例子可以吗?
比如说我想输入:
【成 份】
三七叶中提取的总皂甙。
【功能主治】
益气安神,活血止痛,止血。用于心气不足,失眠,心悸,胸痹心痛,或肿瘤,痈肿疮毒及出血症。
其中的“【成 份】”“【功能主治】”为红色
Top




