C ++ SQLite无法转换`std :: basic_string <char,std :: char_traits <char =“”>,std :: allocator <char>&gt;&#39;到`char *&#39;在作业中</char> </char,>

时间:2015-02-24 18:17:21

标签: c++ sqlite

我尝试使用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> >' to字符*&#39;在任务中

如何使这段代码有效?

有没有更简单的方法来实现这个?这个项目需要C ++和任何类型的数据库(MySQL等)

好的,所以这里是完整的代码,这是一个大学项目,我真的需要一些帮助才能解决这个问题http://pastebin.com/XiisxBxf

1 个答案:

答案 0 :(得分:2)

您可以使用c_str()的{​​{1}}成员函数来获取指向零终止字符序列的指针,适合传递给C风格的函数:

std::string

顺便说一句,如果我将我的名字命名为rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg); ^^^^^^^^ 会怎样?切勿将用户提供的字符串直接插入查询中; prepare一个声明,其中占位符为bind输入。

另外,围绕我的方式,电话号码和邮政编码都不能用整数表示。

相关问题