【发布时间】:2015-02-25 17:11:21
【问题描述】:
我正在尝试使用 C++ 和 SQLite,但我不知道如何将参数传递到单个字符串中以形成 SQLite 命令。
void InsertDB(unsigned long long phone,string name,int age,string address,long int zipcode)
{
stringstream insert;
insert << "INSERT INTO ADBOOK (PHONE,NAME,AGE,ADDRESS,ZIPCODE) VALUES (" << phone << ",'" << name << "'," << age << ",'" << address << "'," << zipcode << " ); ";
sql = insert.str();
/* 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");
}
return;
}
我不断收到错误消息
错误:无法在赋值中转换std::basic_string<char, std::char_traits<char>, std::allocator<char> >' tochar*'
我怎样才能使这个代码块工作?
有没有更简单的方法来实现这个?这是一个需要 C++ 和任何类型的数据库(MySQL 等)的项目
好的,这是完整的代码,这是一个大学项目,我真的需要一些帮助来解决这个问题http://pastebin.com/XiisxBxf
【问题讨论】:
-
rc = sqlite3_exec(db, sql.data(), callback, 0, &zErrMsg); -
Hello SQL 注入攻击
-
@jrok:最好使用
c_str(),以确保它以 C 风格终止。