Morgen
Ich benutze Qt 3.3 auf Freebsd 6.2.
Ist es möglich Grossbuchstaben und Leerzeichen als Tabellen- und Feldnamen zu verweden?
Ich bekomm mit folgendem Bsp. immer Zugriffsprobleme:
sqlDatabase->tables().contains("tabellenName");
sqlCursor->select(sqlCursor->index("feldName");
bzw. auch mit:
sqlDatabase->tables().contains("tabellen Name");
sqlCursor->select(sqlCursor->index("feld Name");
Generell sollte ja nach SQL 92 durch anwendung von "..." Grossbuchstaben (Case-Sensitive) und Leerzeichen möglich sein. Da ich aber obigen Bsp. Code benutze, ist die Frage, ob Qt diese automatisch als "..." sendet oder ob ich es manuell eingeben muss bzw. kann.
Gruss
qtagent
SQL Tabellen- und Feldnamen Probleme
-
qtagent
- Beiträge: 19
- Registriert: 28. Mai 2007 21:36
- Wohnort: Schwiiz | Schweiz | Switzerland | Suisse | Svizzera | Svizra
Hi
* * * xxx postgres[1979]: [1-1] ERROR: relation "tabellenname" does not exist
Wie aus der log Datei ersichtlich und den obigen verwendeten Quellcode auschnitt, wird nicht die Tabelle "tabellenName" angefragt sondern eben "tabellenname". Qt fragt komischerweise nicht die gewünschte Tabelle an. Ist es möglich Qt dazu zu bringen, den Richtigen Tabellen Name bzw. Case-Sensitive zu verwenden?
Ach ja, Postgresql unterstützt Leerzeichen und Case-Sensitive in Tabellennamen und Tabellenfelder. Ausserdem funktioniert die Tabellen anfrage wenn ich ausschliesslich "tabellenname" und nicht "tabellenName" verwende, wäre aber toll, wenn ich eben "tabellenName" benutzen könnte, was ja eigentlich auch gehen sollte.
Gruss
qtagent
Ich verwende Postgresql 7.4 und hab jetzt die log Datei überprüft, ausgegeben wurde:Qt sendet das, was du vorgegeben hast. Und das Logging deiner Datenbank hätte dir das auch verraten. Außerdem würde ich mit nicht auf SQL92 verlassen, sondern das was deine Datenbank-Doku sagt.
* * * xxx postgres[1979]: [1-1] ERROR: relation "tabellenname" does not exist
Wie aus der log Datei ersichtlich und den obigen verwendeten Quellcode auschnitt, wird nicht die Tabelle "tabellenName" angefragt sondern eben "tabellenname". Qt fragt komischerweise nicht die gewünschte Tabelle an. Ist es möglich Qt dazu zu bringen, den Richtigen Tabellen Name bzw. Case-Sensitive zu verwenden?
Ach ja, Postgresql unterstützt Leerzeichen und Case-Sensitive in Tabellennamen und Tabellenfelder. Ausserdem funktioniert die Tabellen anfrage wenn ich ausschliesslich "tabellenname" und nicht "tabellenName" verwende, wäre aber toll, wenn ich eben "tabellenName" benutzen könnte, was ja eigentlich auch gehen sollte.
Gruss
qtagent
-
qtagent
- Beiträge: 19
- Registriert: 28. Mai 2007 21:36
- Wohnort: Schwiiz | Schweiz | Switzerland | Suisse | Svizzera | Svizra
hi
Ausserdem empfange ich durch:
sqlDatabase->tables().contains("tabellenName");
die Tabelle exakt als "tabellenName" und nicht als "tabellenname". Auch das auslesen der gesammten sqlDatabase->tables() zeigt keine konvertierung weiterer vorhandenen Tabellenname. In der Log Datei von PostgreSQL, ist ersichtlich, dass die Anfrage von "tabellenName" durch Befehl:
sqlCursor->select(sqlCursor->index("feld"));
Qt nicht "tabellenName" sondern eben "tabellenname" selektiert und somit es zum Fehler kommt. Gibt es eine möglichkeit, Qt zu erklären, dass es "tabellenName" nicht in klein Buchstaben konvertieren soll?
Desweiteren ist momentan klar, das Feldnamen nach Qt Doku nur in klein Buchstaben möglich sind, auch wenn dies bei PostgreSQL nicht eingeschränkt ist.
Gruss
qtagent
Das PostgreSQL die Tabellennamen in Kleinbuchstaben konvertiert und Leerzeichen nicht akzeptiert kann nicht stimmen. Ich kann problemlos Tabellen in gross und klein Buchstaben wie auch Leerzeichen mit pgAdmin III erstellen.Meines Wissens konvertiert postgres alle Tabellen und Spaltennamen in Kleinbuchstaben. Du kannst es ja mal mit psql testen, was dann im Log-File steht.
Ausserdem empfange ich durch:
sqlDatabase->tables().contains("tabellenName");
die Tabelle exakt als "tabellenName" und nicht als "tabellenname". Auch das auslesen der gesammten sqlDatabase->tables() zeigt keine konvertierung weiterer vorhandenen Tabellenname. In der Log Datei von PostgreSQL, ist ersichtlich, dass die Anfrage von "tabellenName" durch Befehl:
sqlCursor->select(sqlCursor->index("feld"));
Qt nicht "tabellenName" sondern eben "tabellenname" selektiert und somit es zum Fehler kommt. Gibt es eine möglichkeit, Qt zu erklären, dass es "tabellenName" nicht in klein Buchstaben konvertieren soll?
Desweiteren ist momentan klar, das Feldnamen nach Qt Doku nur in klein Buchstaben möglich sind, auch wenn dies bei PostgreSQL nicht eingeschränkt ist.
Gruss
qtagent
Laut Doku:
SQL-SYNTAX-IDENTIFIERS
Gilt folgendes:
SQL-SYNTAX-IDENTIFIERS
Gilt folgendes:
So müßte Groß-/Kleinschreibung egal sein. Mit psql ist es das auch. Mit Qt kann ich es im Moment nicht testen.Identifier and key word names are case insensitive.