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';

谢谢!

UPDATE字符串中带有撇号

您可以通过像''一样加倍来转义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';