2

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 个从我表单中的一些 TextBoxes 中获取它们的值。现在问题是最后一个字段:time我无法设置它的值。当函数运行时,给你这个错误:

异常详细信息:System.Data.SqlClient.SqlException:字符串或二进制数据将被截断。该语句已终止。

我该怎么办?

谢谢你抽出时间。

4

2 回答 2

3

您应该能够直接在 InsertCommand 中使用 SQL GetDate 函数,而无需使用代码隐藏。

InsertCommand="INSERT INTO [contact] ([Name], [phone], [email], [comment], [time]) VALUES (@Name, @phone, @email, @comment, GetDate())"  
于 2012-09-25T21:31:11.977 回答
2

试试这个:

DateTime.Now.ToShortDateString(); 

“字符串或二进制数据将被截断。” 通常与数据库中的字段有关,这些字段的大小比您要放入的字段要小。

于 2012-06-03T11:43:25.873 回答