【问题标题】:How to insert a data to sqlite table from a string c++?如何从字符串 C++ 向 sqlite 表插入数据?
【发布时间】:2014-06-25 21:21:36
【问题描述】:

我试图从用户那里获取一些数据并将其插入到 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 它将被输入到“VALUES ('%s', s);”但事实并非如此。请帮忙

【问题讨论】:

    标签: c++ mysql sql sqlite


    【解决方案1】:

    您不能像您在此处尝试的那样,在 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();
    

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多