我正在编写一个小应用程序(登录掩码)来熟悉 SQLite3 的使用。现在我对 sqlite3_bind_text() 的正确使用有疑问。我创建了一个只有 1 行的小型数据库。在这部分代码中,我想将用户输入绑定到变量并将其绑定到语句。传递的用户输入由 getline(cin,variable) 函数提供。
我的问题:当我尝试使用 bind 方法时,我得到一个即时的“错误库使用”。结果总是21。API文档我已经看了好几遍了,但最后一部分明显看不懂。
有人可以告诉我如何正确使用此功能吗?我检查了我的列类型,它们是“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
PS我已经用谷歌搜索了这两天,没有找到解决方案/简单解释我的问题。