我的格式为SqlDataSource
:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
InsertCommand="INSERT INTO [contact] ([Name], [phone], [email], [comment], [time]) VALUES (@Name, @phone, @email, @comment, @time)"
oninserting="SqlDataSource1_Inserting" >
<InsertParameters>
<asp:ControlParameter ControlID="TBname" Name="Name" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TBphone" Name="phone" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TBemail" Name="email" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TBmessage" Name="comment" PropertyName="Text" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
我有这个函数,它必须在前四个字段中保存TextBoxes的值,在第五个字段中保存当前时间:
protected void SaveToDB(object sender, EventArgs e)
{
SqlDataSource1.InsertParameters["time"].DefaultValue = DateTime.Now.ToString();
SqlDataSource1.Insert();
}
5个字段中的4个从我的表单中的某些TextBox中获取它们的值。现在问题是最后一个字段:time
我无法设置它的值。该函数运行时,会出现以下错误:
异常详细信息:System.Data.SqlClient.SqlException:String or 二进制数据将被截断。声明已经终止。
我该怎么办?
谢谢你花时间。答案 0 :(得分:3)
您应该可以直接在InsertCommand中使用SQL GetDate函数,而无需使用代码隐藏。
InsertCommand="INSERT INTO [contact] ([Name], [phone], [email], [comment], [time]) VALUES (@Name, @phone, @email, @comment, GetDate())"
答案 1 :(得分:1)
试试这个:
DateTime.Now.ToShortDateString();
“字符串或二进制数据将被截断。”通常与数据库中具有较小尺寸的字段有关,然后与您尝试放入其中的字段有关。