我试图从用户那里获取一些数据并将其插入到sql表中。我认为这可能是smtg,但它不起作用。请告诉我如何将输入的控制台数据添加到sqlite表?
string s;
getline(cin, s);
cout << s << endl;
sql = "INSERT INTO Contracts (ID_Con, ID_Shop, ID_Ven, PRICE) " \
"VALUES ('%s', s);";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Records created successfully\n");
}
我以为我可以写1001,2004,5001,50.4,它将被输入&#34; VALUES(&#39;%s&#39;,s);&#34;但它并没有。请帮忙
答案 0 :(得分:0)
在C ++中的字符串赋值运算符中,您不能像在此处尝试过那样将参数化插入到字符串中。还有很多其他方法可以做到。
您可以分配一个老式的C字符串,并使用sprintf调用将您的字符串变量替换为使用%s占位符生成的字符串。
但我可能会使用C ++ ostringstream以更易读的方式构建字符串,而不使用所有格式字符串的象形文字。这样的事情应该对你上面的例子有所帮助(假设你已经将sql
声明为字符串):
#include <sstream>
...
string s;
getline(cin, s);
cout << s << endl;
ostringstream oss;
oss << "INSERT INTO Contracts (ID_Con, ID_Shop, ID_Ven, PRICE) "
<< "VALUES ("
<< s
<< ");" ;
sql = oss.str();