Re: QODBC, query not valid ???
Thomas Wedehase <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Hallo
Am Wednesday, 1. June 2005 11:13 schrieb Gerd König:
> Hallo,
>
> ich versuche mich gerade an einem ersten QT-Datenbank-Programm.
> Ich verbinde mich über ODBC an die DB und versuche ein einfaches select
> abzusetzen und mir die Daten anzeigen zu lassen.
>
> Soweit so gut, aber nach Ausführen des Select's bekomme ich keine Daten,
> obwohl angeblich über 5000 Datensätze "affected" sind.
Kann diese Anzahl stimmen? Mal auf einer Konsole gegen geprüft.?
> query.at() liefert mir stets "-1", auch nach einem query.first().
>
> Warum sagt mir query.isValid() "false", bzw. was genau sagt das aus ?
>
> Die Datenbank ist ordnungsgemäß geöffnet und die Query wurde problemlos
> ausgeführt (query.isActive() = true).
>
>
> code:
> ....
> if ( defaultDB->open() ) {
> QSqlQuery query = defaultDB->exec( "SELECT id, name FROM company");
Ich nehme an defaultDB->exec ist folgendes:
QSqlQuery QSqlDatabase::exec ( const QString & query = QString::null ) const
Executes a SQL statement (e.g. an INSERT, UPDATE or DELETE statement) on the
database <<<< SELECT fehlt hier, vielleicht liegt da der Fehler
Meines Wissens wird nach einem exec erstmal auf einen invalid Record gezeigt.
Bevor man also weitermacht, sollte man ein query.next() aufrufen um zum
ersten Datensatz zu springen.
> qDebug("no. of affected rows: %d, isValid ? %d, isActive ? %d",
> query.numRowsAffected(), query.isValid(), query.isActive());
> if ( query.isActive() ) {
> query.first();
> qDebug("query is active, at: %d", query.at());
> while ( query.next() ) {
> qDebug("ID:%d, name:%s",query.value(0),
> query.value(1) );
>
> }
> }
> QMessageBox::about( this, tr("id, name"),qstr);
> }
> ....
>
> für jede Hilfe dankbar.....GERD....
--
Thomas Wedehase
Nuernberg, Germany
www.thomaswedehase.com
PGP-KEY: 0x3337F9AC
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]