将记录保存到数据库会在ASP中抛出运行时错误.净c#

本文关键字:运行时错误 ASP 保存 记录 数据库 | 更新日期: 2023-09-27 18:05:37

我想知道为什么我得到这个运行时错误抛出这个异常:

SqlException未被用户代码处理

'm'附近语法错误。
字符串')'后的未闭引号。

当我使用下面的代码添加记录到我的数据库时,实际上我每次都使用这段代码,现在它不起作用

我希望你能找出这个错误的原因。谢谢……下面是代码:
protected void Button1_Click(object sender, EventArgs e)
{
   string conn = @"Data Source=.'SQLEXPRESS;AttachDbFilename=|DataDirectory|'Coldwind.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
   SqlConnection connection = new SqlConnection(conn);
   // SqlDataReader dr = new SqlDataReader();
   connection.Open();
   string sql = "INSERT INTO [CommentTab]([Name],[Comments]) Values('" + TextBox1.Text + "','" + TextBox2.Text + "')";
   SqlCommand cmd = new SqlCommand(sql, connection);
   cmd.CommandType = CommandType.Text;
   cmd.ExecuteNonQuery();
   cmd.Dispose();
   connection.Close();
   Response.Redirect("~/Default5.aspx");
}

将记录保存到数据库会在ASP中抛出运行时错误.净c#

我认为问题出在你插入的文本中。你能把它寄出去吗?另外,我建议使用存储过程并传递参数。

您的问题可能是您直接传递用户键入的字符串。例如,如果用户输入带有单引号的内容,它将创建一个错误。

请避免直接将带有内联sql的用户类型字符串传递给数据库。您容易受到sql注入攻击。使用参数化查询可使查询安全且无错误。你可以修改你的代码如下:

//Your code
connection.Open();
string sql = "INSERT INTO [CommentTab]([Name],[Comments]) Values(@username,@comments)";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@username", TextBox1.Text);
cmd.Parameters.AddWithValue("@comments", TextBox2.Text);
cmd.ExecuteNonQuery();
cmd.Dispose();
connection.Close();
Response.Redirect("~/Default5.aspx");

我认为您的输入包含quotation mark("'")本身。所以最好用double来代替像这样的引号

string Val1 =TextBox1.Text.Replace("'","''");