【发布时间】:2012-11-29 19:17:13
【问题描述】:
我有一个这样的字符串:
string query;
query = "insert or replace into TABLEA (a,b,c) values (@a,\"@b\",\"@c\");";
这样我只需简单的替换就可以将字符串插入 B 和 C:
string instring("I have a 3\" gauge");
string instring2("I am looking for 1/8\" thickness");
Replace(&query, "@a", to_string(1));
Replace(&query, "@b", instring);
Replace(&query, "@c", instring2);
所以现在我的查询字符串是:
"insert or replace into TABLEA (a,b,c) values (1,\"I have a 3\" gauge\",\"I am looking for 1/8\" thickness\");";
SQLITE3 得到它,它看起来像:
insert or replace into TABLEA (a,b,c) values (1,"I have a 3" gauge","I am looking for 1/8" thickness");
问题是字符串过早结束。我尝试添加额外的转义字符,但这似乎也不起作用。
现在我正在使用 sqlite3_exec() 来执行所有操作。还有什么我应该做的吗?准备好的语句是否处理我正在尝试做的事情?
我应该只用prepared_v2试试,这可能会解决问题吗?
我应该如何处理这个问题?
【问题讨论】:
-
stackoverflow.com/questions/603572/… 有助于理解我应该删除我拥有的“,只是拥有 ',然后在输入字符串中搜索 ' 并插入一个额外的,这样 DB 语言将了解 '' 是 1 个引号
标签: c++ sql sqlite prepared-statement