UPDATE字符串中包含撇号的字符串

时间:2015-07-20 07:00:09

标签: c# mysql sql

我正在处理一个连接到MySQL并更新表单中的字符串的C#窗体。我有一切正常工作,除了一个小问题。

假设您要将“notes”字段更新为“the dog's bone”,撇号会导致SQL查询结束并导致错误。我怎么能绕过这个呢?

UPDATE `database`
SET `notes` = 'The dog's bone'
WHERE `Pet` = 'Dog';

谢谢!

2 个答案:

答案 0 :(得分:5)

你可以escape ' character在MySQL中加倍''

除此之外,如果您使用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方法重载来指定参数类型及其大小。

答案 1 :(得分:2)

使用另一个单引号'来逃避它:

SELECT `database`
SET `notes` = 'The dog''s bone'
WHERE `Pet` = 'Dog';