Wenn Sie eine Anwendung unter Qt entwickeln, die mit Datenbanken arbeiten soll, müssen Sie die Nuance berücksichtigen, dass der Qt -Treiber für die Zieldatenbank möglicherweise nicht alle Arten von Daten unterstützt, die Sie möglicherweise eingeben Ihre Datenbank. Eines der ähnlichen Beispiele, auf das einer der Leser der Website gestoßen ist, war beispielsweise ein Problem mit der Anzeige des Datentyps DECIMAL durch QSqlTableModel . Bei der Entwicklung einer Anwendung im C++ Builder hingegen wurde dieser Datentyp perfekt in der Ansicht dargestellt.
Und die Arbeit wurde mit der MS SQL -Datenbank erledigt, für die der ODBC -Treiber verwendet wurde. Die Ergebnisse der Ausführung von Anwendungen auf C++ Builder und auf Qt sind in den folgenden Abbildungen dargestellt. Der Unterschied im Aussehen der Tabellen besteht darin, dass in einer Qt-Anwendung keine Werte in der Ansicht vorhanden sind, bei denen der Datentyp in der Datenbank als DECIMAL deklariert wurde.
C++ Builder-Anwendung – Alle Spalten sind ausgefüllt
Qt-Anwendung - fehlende Werte in DECIMAL-Spalten
Datentypen in der Dokumentation prüfen
Beim Überprüfen der unterstützten Datentypen auf der Seite in der offiziellen Dokumentation finden wir die Datentypen, die vom ausgewählten Treiber und unterstützt werden Passen Sie die Datenbank entsprechend den Datentypen an, die von demselben Treiber unterstützt werden.
ODBC-Datentypen
ODBC-Datentyp | Beschreibung des SQL-Typs | Empfohlene Eingabe (C++- oder Qt-Datentyp) |
---|---|---|
BIT | Boolesch | BOOL |
TINYINT | 8-Bit-Ganzzahl | typedef qint8 |
SMALLINT | 16-Bit-Ganzzahl mit Vorzeichen | typedef qint16 |
INTEGER | 32-Bit-Ganzzahl mit Vorzeichen | typedef qint32 |
BIGINT | 64-Bit-Ganzzahl mit Vorzeichen | typedef qint64 |
REAL | 32-Bit-Gleitkommazahl mit einfacher Genauigkeit | Standardmäßig ist die Zuordnung zu QString |
FLOAT | 64-Bit-Double-Floating-Point | Standardmäßig ist die Zuordnung zu QString |
DOUBLE | 64-Bit-Double-Floating-Point | Standardmäßig ist die Zuordnung zu QString |
CHAR | Zeichenkette | Zugeordnet zu QString |
VARCHAR | Zeichenkette | Zugeordnet zu QString |
LONGVARCHAR | Zeichenkette | Zugeordnet zu QString |
CLOB | Character großes Zeichenfolgenobjekt | Zugeordnet zu QString |
DATE | Zeichenkette | Zugeordnet zu QDate |
TIME | Zeichen Zeit, Zeichenkette | Zugeordnet zu QTime |
TIMESTAMP | Zeichen Zeit, Zeichenkette | Zugeordnet zu QDateTime |
Insgesamt
Infolgedessen wurde der Typ DECIMAL einfach in den Typ INTEGER geändert, und alles ging los.