C# 无法插入包含';(撇号)插入SQL Server表中
我正在尝试使用文本框将文本插入SQL表:C# 无法插入包含';(撇号)插入SQL Server表中,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,我正在尝试使用文本框将文本插入SQL表: SqlCommand cmd = new SqlCommand("INSERT INTO Book(Title) VALUES ('" + textBoxTitle.Text + "','" + "')", conn); 但如果文本包含撇号(例如,youll…),则显示: 'll'附近的语法不正确。首先,您的值部分中有两个值。一个是textBoxTitle.Text,另一个是'。但你只提供了一个专栏 如果这是真的,您应该删除查询中的'部分。但更重要的是
SqlCommand cmd = new SqlCommand("INSERT INTO Book(Title) VALUES ('" + textBoxTitle.Text + "','" +
"')", conn);
但如果文本包含撇号(例如,youll…),则显示:
'll'附近的语法不正确。首先,您的
值部分中有两个值。一个是textBoxTitle.Text
,另一个是'
。但你只提供了一个专栏
如果这是真的,您应该删除查询中的'
部分。但更重要的是,您应该始终使用。这种类型的字符串连接对攻击是开放的
如果参数化查询和语句对单引号产生任何问题,请对每个查询和语句使用双单引号
还可用于处理数据库连接和命令
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();
}
如果您正在对.Net进行编程,也可以使用SqlBulkCopy插入数据,而无需转义任何字符
作为奖励,它速度很快(如果要插入很多内容,则比INSERT更快)。为什么在值后面和结束之前有逗号?不要将值直接放入SQL语句中。请使用参数,以便我至少可以发表评论,这样我就可以看出我可能错在哪里了?