1

我有这段代码,可让您在文本框中输入句子,并将其插入 SQL Server 的表中

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
   con.Open();
   SqlCommand com = new SqlCommand("Insert Into tbl_notes (Notes,date_time) Values('" + txtbox_Notes.Text + "','" + DateTime.Now + "')", con);
   com.ExecuteNonQuery();
   txtbox_Notes.Text = "";
}

但是当我按下调用此函数的按钮时,它会发出错误

字符串或二进制数据将被截断

4

2 回答 2

4

该错误表明您尝试在Notes列中插入的字符串长度超过了该列定义中允许的最大大小。尝试将值截断为txtbox_Notes.Text指定的列长度。

我还建议您阅读一些有关SQL 注入的信息,并考虑到您执行此插入命令的方式非常容易受到这种攻击。正如对该问题的评论中所建议的那样,您还可以使用存储过程来执行插入,这不仅提供了(薄)安全层,而且使您的代码更具可读性。

于 2013-06-24T04:45:06.817 回答
0

您需要在查询中使用参数,否则您会使其非常容易出错,并且也很容易破解 SQL 注入。

试试这样的,看看它是否适合你

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
    {
        con.Open();
        SqlCommand com = new SqlCommand("Insert Into tbl_notes (Notes,date_time) Values(@Notes,@DateTime)", con);
        com.Parameters.Add(new SqlParameter("@Notes", txtbox_Notes.Text));
        com.Parameters.Add(new SqlParameter("@DateTime", DateTime.Now));
        com.ExecuteNonQuery();
        txtbox_Notes.Text = "";
    }
于 2013-06-24T13:07:51.723 回答