我在一个文件中编写了数据库模式(到目前为止只有一个表)和该表的INSERT语句。然后我创建了如下的数据库:
$ sqlite3 newdatabase.db
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .read ./schema.sql
SQL error near line 16: near "s": syntax error
我的文件的第16行是这样的:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
问题在于单引号的转义字符。我还尝试了双转义单引号(使用\\\'而不是\'),但这也不起作用。我做错了什么?
在c#中,你可以使用下面的方法将单引号替换为双引号:
string sample = "St. Mary's";
string escapedSample = sample.Replace("'", "''");
输出将是:
"St. Mary''s"
而且,如果你直接使用Sqlite;你可以使用object而不是string,并捕获特殊的东西,如DBNull:
private static string MySqlEscape(Object usString)
{
if (usString is DBNull)
{
return "";
}
string sample = Convert.ToString(usString);
return sample.Replace("'", "''");
}
在c#中,你可以使用下面的方法将单引号替换为双引号:
string sample = "St. Mary's";
string escapedSample = sample.Replace("'", "''");
输出将是:
"St. Mary''s"
而且,如果你直接使用Sqlite;你可以使用object而不是string,并捕获特殊的东西,如DBNull:
private static string MySqlEscape(Object usString)
{
if (usString is DBNull)
{
return "";
}
string sample = Convert.ToString(usString);
return sample.Replace("'", "''");
}