我想使用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语法不正确。这样做的正确方法是什么?
答案 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的内容:)