UPDATE字符串中带有撇号
本文关键字:字符串 UPDATE | 更新日期: 2023-09-27 18:03:35
我正在处理一个连接到MySQL并更新表单中字符串的C#windows表单。除了一个小问题,我的一切都正常工作。
假设您想将"notes"字段更新为"the dog’s bone",则撇号会导致SQL查询结束并导致错误。我该怎么绕过这个?
UPDATE `database`
SET `notes` = 'The dog's bone'
WHERE `Pet` = 'Dog';
谢谢!
您可以通过像''
一样加倍来转义MySQL中的'
字符。
除此之外,如果使用参数化查询,则根本不需要此。只需将The dog's bone
字符串直接传递给参数化查询,就可以了。
此外,我强烈怀疑您试图使用UPDATE
而不是SELECT
语句。在MySQL中,SELECT
语法没有任何SET
部分。
使用保留关键字作为列名是个坏主意。最佳做法是,将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
方法作为示例,因为我不知道您的列类型,但您不使用它。这种方法有时可能会产生意想不到的结果。使用Add
方法重载来指定参数类型及其大小。
用另一个单引号'
:转义
SELECT `database`
SET `notes` = 'The dog''s bone'
WHERE `Pet` = 'Dog';