Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法插入包含';(撇号)插入SQL Server表中_C#_Sql_Asp.net_Sql Server - Fatal编程技术网

C# 无法插入包含';(撇号)插入SQL Server表中

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,另一个是'。但你只提供了一个专栏 如果这是真的,您应该删除查询中的'部分。但更重要的是

我正在尝试使用文本框将文本插入SQL表:

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语句中。请使用参数,以便我至少可以发表评论,这样我就可以看出我可能错在哪里了?