如何从字符串c ++中将数据插入sqlite表?

时间:2014-05-08 13:01:36

标签: c++ mysql sql sqlite

我试图从用户那里获取一些数据并将其插入到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;但它并没有。请帮忙

1 个答案:

答案 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();