gpt4 book ai didi

c++ - sqllite3_bin_text 的正确用法

转载 作者:行者123 更新时间:2023-11-28 03:09:28 24 4
gpt4 key购买 nike

我正在编写一个小应用程序 (Login Mask) 来熟悉 SQLite3 的使用。现在我对 sqlite3_bind_text() 的正确使用有疑问。我创建了一个只有 1 行的小型数据库。在这部分代码中,我想将用户输入绑定(bind)到一个变量并将其绑定(bind)到一个语句。用户输入由 getline(cin,variable) 函数传递。

我的问题:当我尝试使用 bind 方法时,我立即收到“False Library use”。结果总是 21。我读过 API documentation几次,但我显然不明白最后一部分。

有人可以告诉我如何正确使用此功能吗?我检查了我的列类型,它们是“Text NOT NULL”。

int Login::check_login(string username, string password) {
int errcode = 0;
string query = "Select a_username,a_password from t_user where a_username = ? and a_password = ?;";
sqlite3_stmt *createStmt;

errcode = sqlite3_prepare_v2(datab->get_db(), query.c_str(), query.size(), &createStmt, NULL);

if (!errcode)
throw runtime_error("Failed! Can not prepare statement DB.");

errcode = sqlite3_bind_text(createStmt, 1, password.c_str(), -1, SQLITE_STATIC); // Always 21 because of false library use

//there is more code but i think this should be enough

附言我用谷歌搜索了这 2 天,但没有找到任何解决方案/对我的问题的简单解释。

最佳答案

我认为您对 sqlite3_prepare_v2() 的调用失败并且没有准备有效的语句(您没有得到异常,不是吗?),但在错误检查中有错别字。

当sqlite3_*函数执行成功时,返回SQLITE_OK,即0。所以正确的错误检查是:

if (errcode)
throw runtime_error("Failed! Can not prepare statement DB.");

这就是为什么 sqlite3_bind_text() 也失败了。

关于c++ - sqllite3_bin_text 的正确用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855948/

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