Seite 1 von 1

QSqlRecord: field() mit table-angabe ("table.column&quo

Verfasst: 29. März 2011 15:19
von -=Freaky=-
schoenen guten tag.

wenn ich ein einfaches select-statement per QSqlQuery ausfuehre, das nur aus einer einzigen tabelle daten holt ("SELECT * FROM MyTable"), und danach via QSqlRecord::field (query.record().field()) die ergebnisfelder kriegen moechte, funktioniert das nur, wenn ich lediglich die spaltenbezeichnung angebe (query.record().field("Column")).

ich moechte aber aus verschiedenen gruenden gerne auch mit "Table.Column"-notation darauf zugreifen koennen. gibt es da einen weg, dass QSqlRecord auch damit umgehen kann?
soweit ich weiss, koennen spaltenbezeichner auch "." enthalten, deshalb ist ein einfaches suchen nach dem "." und abschneiden, bevor record().field() aufgerufen wird, wohl keine gute idee.

ich bedanke mich im voraus fuer alle antworten.

gruesse
julian

Verfasst: 29. März 2011 16:31
von upsala
Was macht das für einen Sinn, wenn man nur eine Tabelle hat?

Liefert der Datenbank-Treiber überhaupt mehr mit?

Und eigentlich gibt es für solche Fälle den 'Alias'.

Verfasst: 29. März 2011 16:55
von -=Freaky=-
es geht darum dass in einer anwendung sql-statements z.t. automatisch generiert werden und mittels vorgefertigter bezeichner (const char*, automatisch generierter code), anstatt mit strings, angaben gemacht (nur damit im programmcode moeglichs nicht direkt mit strings gearbeitet wird, um nicht zuviele laufzeitfehler zu provozieren).
und wenn man dann z.b. DBFields::MyTable::Col1 (="MyTable.Col1") verwendet, sollte das in jedem fall funktionieren, egal ob man in dem entspr. sql-statement mit einem oder mit n tables hantiert. sonst muss man immer noch irgendwie unterscheiden, was ein bisschen unhandlich waere.

hoffe das war einigermassen verstaendlich.

gruesse
julian

Verfasst: 29. März 2011 17:31
von upsala
Qt kann nur das weitergeben, was auch der Datenbanktreiber liefert. Liefert der überhaupt mehr Informationen?