Evgenii Legotckoi
20 листопада 2015 р. 21:23

Qt/C++ - Урок 040. Типи даних у різних базах даних у Qt

У процесі розробки програми під Qt , яка має працювати з базами даних, необхідно враховувати той нюанс, що драйвер Qt для цільової Бази Даних може не підтримувати всі типи даних, які Ви могли закласти у Вашу Базу Даних. Наприклад, один із подібних прикладів, з яким зіткнувся один із читачів сайту, це проблема з відображенням типу даних DECIMAL через QSqlTableModel . У той час як при розробці програми на C++ Builder цей тип даних відмінно відображався у поданні.

А робота проводилася з базою даних MSSQL , для якої використовувався драйвер ODBC . Результати роботи додатків на C++ Builder та на Qt наведені на нижченаведених малюнках. Різниця у вигляді таблиць у тому, що у додатку на Qt відсутні значення уявленні, де тип даних у базі даних було оголошено як DECIMAL .


C++ Builder - Всі колонки заповнені

Додаток на Qt – відсутні значення у колонках з типом даних DECIMAL

Перевіряємо типи даних у документації

При перевірці підтримуваних типів даних на сторінці в офіційної документації знаходимо типи даних, що підтримуються, вибраним драйвером та коригуємо Базу Даних відповідно до типів даних, які підтримуються цим драйвером.

Типи даних ODBC

Тип даних ODBC Опис типу SQL Рекомендований введення (тип даних C++ або Qt)
BIT Логічний BOOL
TINYINT 8 бітове ціле число typedef qint8
SMALLINT 16-розрядне ціле число зі знаком typedef qint16
INTEGER 32-розрядне ціле число зі знаком typedef qint32
BIGINT 64-розрядне ціле число зі знаком typedef qint64
REAL 32-бітовий одинарної точності з плаваючою комою За замовчуванням відображення на QString
FLOAT 64-розрядна подвійна плаваюча кома За замовчуванням відображення на QString
DOUBLE 64-розрядна подвійна плаваюча кома За замовчуванням відображення на QString
CHAR Рядок символів Відображається на QString
VARCHAR Рядок символів Відображається на QString
LONGVARCHAR Рядок символів Відображається на QString
CLOB Символ великого рядкового об'єкта Відображається на QString
DATE Рядок символів Зіставлено з QDate
TIME Час символу, рядок символів Відображається на QTime
TIMESTAMP Час символу, рядок символів Відображається на QDateTime

Підсумок

В результаті тип DECIMAL був просто змінений на тип INTEGER і все злетіло.

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up