MySQL соединитель PreparedStatement-> setString не работает C ++ - PullRequest
0 голосов
/ 30 апреля 2018

Итак, в основном весь этот код выполняет поиск в базе данных пользователя с определенным именем пользователя и паролем и возвращает nullptr, если он не находит его.

    Gebruiker* Gebruiker_DAO::getGebruiker(string login, string wachtwoord)
{

    PreparedStatement *prep_stmt = nullptr;
    ResultSet *res = nullptr;
    Gebruiker* gebruiker = nullptr;
    int rowcount = 0;

    try {
        prep_stmt = dbConn->getConnection()->prepareStatement("SELECT * FROM Gebruiker WHERE Gebruiker_login = ? AND Gebruiker_wachtwoord = ?");

        prep_stmt->setString(1, login);
        prep_stmt->setString(2, wachtwoord);

        res = prep_stmt->executeQuery();
        while (res->next()) {
            gebruiker = new Gebruiker(login, res->getBoolean("Gebruiker_isAdmin"), res->getString("Bedrijf"),res->getBoolean("Gebruiker_isActief"),res->getInt("Werknemer_ID"));
        }
    }
    catch(SQLException& e) {
        console.log(e.what(), console.Error);
        return nullptr;
    }

    return gebruiker;
}

Проблема в том, что setString создает «std :: bad_alloc в ячейке памяти ...» Ранее я заметил, что попытка поместить строку в SQLString также приводит к ошибке. До сих пор я использовал обходной путь, помещая вещи в SQLStrings.

SQLString schema = "groep003B";
    dbConn->getInstance()->setSchema(schema);
    dbConn->getInstance()->connect();

По какой-то странной причине это работает ...

Что-то я делаю не так? Я видел примеры, когда люди используют строки, но по какой-то причине это не работает для меня ... Каждый раз, когда я пытаюсь поместить переменную std :: string в SQLString, это вызывает проблему с памятью.

...