我正在尝试使用文本框将文本插入到SQL表中:
SqlCommand cmd = new SqlCommand("INSERT INTO Book(Title) VALUES ('" + textBoxTitle.Text + "','" +
"')", conn);
但如果文字包含撇号(例如,你将......),它会显示:
Incorrect syntax near 'll'.
答案 0 :(得分:3)
首先,VALUES
部分中有两个值。一个是textBoxTitle.Text
,另一个是''
。但是你只提供了一个专栏。
如果这是真的,您应该删除查询中的''
部分。但更重要的是,您应始终使用parameterized queries。这种字符串连接对SQL Injection攻击开放。
如果参数化查询和语句对单引号产生任何问题,请为每个引用使用双引号。
还可以使用using
statement来处理数据库连接和命令。
using(SqlConnection con = new SqlConnection(connString))
using(SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "INSERT INTO Book(Title) VALUES (@title)";
cmd.Parameters.AddWithValue("@title", textBoxTitle.Text);
con.Open();
cmd.ExecuteNonQuery();
}
答案 1 :(得分:0)
如果您正在编程.Net,则可以使用SqlBulkCopy插入数据而不转义任何字符。
作为奖励它是快速的(如果你有很多要插入的话,比INSERT快)。