将记录保存到数据库会在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");
}
我认为问题出在你插入的文本中。你能把它寄出去吗?另外,我建议使用存储过程并传递参数。
您的问题可能是您直接传递用户键入的字符串。例如,如果用户输入带有单引号的内容,它将创建一个错误。
请避免直接将带有内联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("'","''");