C# SQL server表单输入带撇号的字符串

C# SQL server表单输入带撇号的字符串,c#,sql-server,forms,C#,Sql Server,Forms,我有一个链接到SQL server数据库的C#form应用程序。应用程序将查询中继到SQL server,并相应地输入/输出数据 出现的一个错误是当我试图输入一个包含撇号的字符串时,例如输入“狗的骨头” 有没有办法输入这个,因为我不能要求用户像很多人建议的那样总是输入双撇号 这是我正在输入的查询: Query = "INSERT INTO " + databaseNotes + " VALUES ('" + Release_Desc_txtBox.Text + "')"; constring =

我有一个链接到SQL server数据库的C#form应用程序。应用程序将查询中继到SQL server,并相应地输入/输出数据

出现的一个错误是当我试图输入一个包含撇号的字符串时,例如输入
“狗的骨头”

有没有办法输入这个,因为我不能要求用户像很多人建议的那样总是输入双撇号

这是我正在输入的查询:

Query = "INSERT INTO " + databaseNotes + " VALUES ('" + Release_Desc_txtBox.Text + "')";
constring = "Password=" + pass + ";Persist Security Info=True;User ID=" + user + ";Initial Catalog=" + catalog + ";Data Source=" + datasource;
// CONNECTION TO SQL SERVER DATABASE
SqlConnection conDataBase = new SqlConnection(constring);
SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase);
SqlDataReader myReader;

如果要转义单引号,请在sql查询中

The dog''s bone
但我不推荐,你也不能

而是使用,它将自动处理这些单引号,而不会将它们加倍。这种字符串连接是可以被攻击的

还可用于自动处理
SqlConnection
SqlCommand
。在我看来,您不需要
SqlDataReader
,因为您只需要尝试使用
INSERT
query

using(var conDataBase = new SqlConnection(constring))
using(var cmdDataBase = conDataBase.CreateCommand())
{
    // Set your CommandText property with parameters.
    // Add your parameters and their values with `Add()` method.
    // Open your connection.
    // Execute your query.
}

顺便说一句,由于您将表名作为输入,请在将其放入sql查询或获取白名单之前进行强验证。我希望您的表名只有一组固定的可能正确的值。

使用
准备好的语句。它们使用起来更安全,还可以防止SQL注入攻击

或者您必须转义用户输入


但是更好的解决方案是使用
准备好的语句

,顺便问一下,为什么要用
mysql
标记呢?这似乎与我无关。