在字符串中使用撇号更新字符串
我正在连接到MySQL并更新窗体内的字符串的C#窗体窗体上工作。除了一个小问题,我已经正常工作了。在字符串中使用撇号更新字符串
假设您要更新“笔记”字段以读取“狗的骨头”,该撇号导致SQL查询结束并导致错误。我怎样才能解决这个问题?
UPDATE `database`
SET `notes` = 'The dog's bone'
WHERE `Pet` = 'Dog';
谢谢!
与另一单引号'
退出:
SELECT `database`
SET `notes` = 'The dog''s bone'
WHERE `Pet` = 'Dog';
谢谢先生,你有任何想法如何以编程方式做到这一点吗? –
我建议您按照sonorGönüls建议使用参数化查询。 –
你在MySQL中使用它像''
可以加倍escape '
character。
除此之外,如果您使用parameterized queries,您将不需要此在所有。只需将您的The dog's bone
字符串直接传递给您的参数化查询,您就会安然无恙。
另外我强烈怀疑您尝试使用UPDATE
而不是SELECT
声明。在MySQL中,SELECT
syntax没有任何SET
部分。
而使用a reserved keyword as a column name是一个坏主意。作为最佳做法,请将database
列名更改为非-保留字。
using(var con = new MySqlConnection(conString))
using(var cmd = con.CreateCommand())
{
cmd.CommandText = @"UPDATE `database` SET notes = @notes
WHERE Pet = @pet";
cmd.Parameters.AddWithValue("@notes", "The dog's bone");
cmd.Parameters.AddWithValue("@pet", "Dog");
con.Open();
cmd.ExecuteNonQuery();
}
我用AddWithValue
方法,在我的代码的例子,因为我不知道你的列类型,但你不使用它。 This method may generate unexpected and surprising results sometimes。使用Add
方法重载指定您的参数类型及其大小。
在撇号前添加另一个单引号或添加一个Salah – Jaylen