Что не так с синтаксисом моего SQL-запроса SELECT? - PullRequest
0 голосов
/ 29 июня 2019

Я потратил полдня на проверку, почему, обнаружил, что мой запрос возвращается в сообщении об ошибке (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, если нет)

Редактировать : проблема возникла из-за незарегистрированного доступа к базе данных, просто откройте базу данных в функции, а не в конструкторе классов, как я.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...