C# SQL server表单输入带撇号的字符串
我有一个链接到SQL server数据库的C#form应用程序。应用程序将查询中继到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 =
“狗的骨头”
有没有办法输入这个,因为我不能要求用户像很多人建议的那样总是输入双撇号
这是我正在输入的查询:
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
标记呢?这似乎与我无关。