sqlite SELECT查询的语法有什么问题?

时间:2019-06-29 13:27:11

标签: c++ sqlite

我花了半天时间检查原因,发现我的查询返回错误消息(arr):bad parameter or other API misuse

我尝试将查询更改为:SELECT * FROM USERS;,但仍然给出:bad parameter or other API misuse,并且我检查问题是否出在回调中,sqlite甚至没有调用它。

bool IDatabase::checkIfLogged(std::string username, std::string password)
{
    bool flag = false;
    std::string query = "SELECT USERNAME FROM USERS WHERE USERNAME = '" + username + "' AND PASSWORD = '" + password + "';";
    printf("\n%s\n", query.c_str());
    int res;
    char* arr = 0;
    if (res = sqlite3_exec(db, query.c_str(), callbackexist, &flag, &arr) != SQLITE_OK) //throw std::exception(__FUNCTION__ " - checking isnt good");
        printf("%s", sqlite3_errmsg(db));
    printf("\n\n%d\n\n%s\n\n", res, arr);
    return flag;
}

int IDatabase::callbackexist(void * data, int argc, char ** argv, char ** azColName)
{
    bool* f = (bool*)data;
    *f = argc > 1;
    printf("\n");
    for (int i = 0; i < argc; i++)
    {
        printf(azColName[i] + '\n');
        printf(argv[i] + '\n');
    }
    printf("\n");
    return 0;
}

除了问题出在查询语法中之外,我将获得所需的输出(如果记录则为true,否则为false)

编辑:问题来自未注册的对数据库的访问,仅在函数中打开数据库,而不是在像我这样的类构造函数中打开数据库。

0 个答案:

没有答案