使用C#插入MySQL数据库表,该字符串可以包含双引号

时间:2014-04-03 14:49:23

标签: c# mysql

我想使用C#插入MySQL数据库表,这是一个可以包含双引号的字符串。这是我到目前为止所尝试的内容(首先转义双引号,然后将字符串括在双引号之间):

string sqlStr = "INSERT INTO table(ID, Comment) VALUES ";
foreach (KeyValuePair<string, string> kvp in myDict)
{
    string id = kvp.Key;
    string comment = String.Format("\"{0}\"", kvp.Value.Replace(@"""", @"\"""));
    sqlStr +=  String.Format("({0}, {1}), ";
}
// strip last comma
sqlStr = sqlStr.Substring(0, sqlStr.Length - 2);
conn.DoSql(sqlStr);

但是仍然会出现错误,我的SQL语法不正确。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

SQL使用单引号括起字符串。这意味着您的字符串中的双引号不需要转义,但单引号可以。假设您的字符串中没有任何单引号或撇号,您的代码应为:

string sqlStr = "INSERT INTO table(ID, Comment) VALUES ";
foreach (KeyValuePair<string, string> kvp in myDict)
{
    string id = kvp.Key;
    string comment = String.Format("'{0}'", kvp.Value);
    sqlStr +=  String.Format("({0}, {1}), ";
}
// strip last comma
sqlStr = sqlStr.Substring(0, sqlStr.Length - 2);
conn.DoSql(sqlStr);

答案 1 :(得分:0)

尝试在执行之前打印sql语句并检查它的内容

// firt do this
Console.WriteLine(sqlStr);

// and then this
conn.DoSql(sqlStr);

如果可以,请发布sqlStr的内容:)