gpt4 book ai didi

C++ SQLite 无法在赋值中将 `std::basic_string, std::allocator>' 转换为 `char*'

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:57 25 4
gpt4 key购买 nike

我正在尝试使用 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赋值中的 char*'

我怎样才能使这段代码工作?

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

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

最佳答案

可以使用std::stringc_str() 成员函数得到一个指向以零结尾的字符序列的指针,适合传递给C-style功能:

rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg);
^^^^^^^^

顺便说一句,如果我将自己的名字命名为 "); DROP TABLE ADBOOK #" 会怎样?切勿将用户提供的字符串直接插入到查询中; prepare带有占位符的声明 bind到输入。

此外,在我看来,电话号码和 zip /邮政编码都不能用整数表示。

关于C++ SQLite 无法在赋值中将 `std::basic_string<char, std::char_traits<char>, std::allocator<char>>' 转换为 `char*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28703275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com