как исправить: ошибка 21 в sqlite 3 при использовании exec?CPP - PullRequest
0 голосов
/ 08 июня 2019

Я делаю проект и работаю с SQLite 3 для создания базы данных.Я пытаюсь проверить, существует ли пользователь, чтобы сделать запрос на вход, но почему-то это не работает (таблица пользователей уже создана).когда я использую exec, он не попадает в функцию обратного вызова, и я получаю результат 21, который, по-видимому, является ошибкой из-за вызова, но я не могу понять, как это исправить.

//this is the callback function
int loginCallBack(void* var, int count, char** data, char** columns)
{
    int lol = 0;
    std::cout << count;
    if (count > 0)
    {
        for (int i = 0; i < count; i++) {
            printf("%s = %s\n", columns[i], data[i] ? data[i] : "NULL");
        }
        *(bool *) var = true;
    }
    else
    {
         *(bool *) var = false;
    }
    return 0;
}

int LoginManager::login(std::string username, std::string password)
{
    std::string sqlStatement = "SELECT * FROM users WHERE username = " + username+ " AND password = "+ password + ";";
    bool* ifLoginSucceded = new bool;
    int res = sqlite3_exec(m_database.db, sqlStatement.c_str(), loginCallBack, ifLoginSucceded, nullptr);
    std::cout << res;
    if (*(ifLoginSucceded))
    {
        m_loggedUsers.push_back(LoggedUser(username));
        return 1;
    }
    else
    {
        return 0;
    }
}

когдая запущен, последняя строка sqlstatement выглядит следующим образом: SELECT * FROM users WHERE username = "username" И пароль = "password";

Я также пытался запустить это с sqlstatement: SELECT * FROM users;который также не работает, и я получаю результат 21

спасибо за помощь

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