Evgenii Legotckoi
Evgenii Legotckoi20 ноября 2015 г. 21:23

Qt/C++ - Урок 040. Типы данных различных Баз Данных в Qt

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

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


Приложение на C++ Builder - Все колонки заполнены

Приложение на Qt - отсутствуют значения в колонках с типом данных DECIMAL

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

При проверке поддерживаемых типов данных на странице в официальной документации находим типы данных, которые поддерживаются, выбранным драйвером и корректируем Базу Данных в соответствии с типами данных, которые поддерживаются этим самым драйвером.

ODBC Data Types

ODBC data type SQL type description Recommended input (C++ or Qt data type)
BIT Boolean BOOL
TINYINT 8 bit integer typedef qint8
SMALLINT 16-bit signed integer typedef qint16
INTEGER 32-bit signed integer typedef qint32
BIGINT 64-bit signed integer typedef qint64
REAL 32-bit Single-precision floating point By default mapping to QString
FLOAT 64-bit Double floating point By default mapping to QString
DOUBLE 64-bit Double floating point By default mapping to QString
CHAR Character string Mapped to QString
VARCHAR Character string Mapped to QString
LONGVARCHAR Character string Mapped to QString
CLOB Character large string object Mapped to QString
DATE Character string Mapped to QDate
TIME Character Time, Character string Mapped to QTime
TIMESTAMP Character Time, Character string Mapped to QDateTime

Итог

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

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Lz

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:70баллов,
  • Очки рейтинга1
РК

Qt - Тест 001. Сигналы и слоты

  • Результат:84баллов,
  • Очки рейтинга4
ВМ

C++ - Тест 001. Первая программа и типы данных

  • Результат:80баллов,
  • Очки рейтинга4
Последние комментарии
k
kmssr8 февраля 2024 г. 15:43
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий Кононенко4 февраля 2024 г. 22:50
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25 декабря 2023 г. 7:30
Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
J
JonnyJo25 декабря 2023 г. 5:38
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
G
Gvozdik18 декабря 2023 г. 18:01
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
NSProject
NSProject23 июня 2024 г. 10:48
добавить qlineseries в функции А куда собстаенно делся Евгений раз на сайте такой бордак творится?
BlinCT
BlinCT5 мая 2024 г. 2:46
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii Legotckoi2 мая 2024 г. 11:07
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.
IscanderChe
IscanderChe30 апреля 2024 г. 1:22
Во Flask рендер шаблона не передаётся в браузер Доброе утро! Имеется вот такой шаблон: <!doctype html><html> <head> <title>{{ title }}</title> <link rel="stylesheet" href="{{ url_…
G
Gar22 апреля 2024 г. 2:46
Clipboard Как скопировать окно целиком в clipb?

Следите за нами в социальных сетях