Podczas połączenia z baza danych przez qt wyskoczyło Debug Assertion Failed

0

Gdy odpalam funkcję:

 
void Zapytaj(QSqlDatabase &db)
{
    cout << "SELECT * FROM keylogger" << endl;
    QSqlQuery query(db);
 
    query.exec("SELECT * FROM keylogger");
    query.next();
    QString operation = query.value(0).toString();
    string stringOperation = operation.toStdString();
 
    cout << stringOperation << endl;
    query.clear();
 
}

Wyskakuje mi błąd podany w załączniku.
Korzystam z Qt add-in do VisualStudio.
Z góry dziękuję i pozdrawiam ;)

0

powiedz czy
zmienna db jest sensowna (czy cos zawiera)
query czy sie tworzy (czy nie jest nullem albo w state failed czy cos takiego)
czy uzywales debuggera?

0

Wystarczyło zmienić Konfigurację z Debug na Release ;)

0

Upewnij się na początek,że referencja którą przekazujesz jako parametr do funkcji jakoś w międzyczasie nie ginie.

0

Z dokumentacji Qt:
exec():

Executes the SQL in query. Returns true and sets the query state to active if the query was successful; otherwise returns false

Sprawdź wynik zwracany przez exec() czy jest true, żebyś wiedział, czy w ogóle cokolwiek dostajesz.

next():

Retrieves the next record in the result, if available, and positions the query on the retrieved record. Note that the result must be in the active state and isSelect() must return true before calling this function or it will do nothing and return false.

Sprawdź wynik zwracany przez next() czy jest true. Dopiero wtedy rób to

query.value(0).toString()

W przypadku exec() dowiesz się w ten sposób, czy zapytanie się powiodło, a dla next() czy przypadkiem nie dostałeś pustej kolekcji rekordów, bo też tak może być.

1 użytkowników online, w tym zalogowanych: 0, gości: 1