Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2016, 08:31   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию Получить названия таблиц, имена полей, типы. Qt SQL

Здравствуйте.
Нужно получить, из базы SQL, названия таблиц, имена их полей и типы данных которые там хранятся.

Код:
    QSqlDatabase db;
    // далее открытие базы данных
    // .............

    QSqlQuery query;
    QSqlRecord rec;

    // Получаем список таблиц
    QStringList lst_tables = db.tables();

    for(int i = 0; i < lst_tables.size(); i++)
    {
        query.exec("SELECT *FROM " + lst_tables[i]);
        rec = query.record();
        qDebug()<<lst_tables[i]<<"count column"<<rec.count();

        for(int j = 0; j < rec.count(); j++)
        {
            // Получаем названия полей
            qDebug()<<"filed name:"<<rec.fieldName(j)<<
                      "type"<<rec.field(j).type();
        }
    }
Что касается, получения названия полей таблиц -работает. Но может это кривое решение? если да подскажите.

А вот что касается получения типов-
тип INTEGER (я имею в виду SQL), в консоле отображается как int, VARCHAR как QString. Вроде как и должно быть.
Но вот с типом DATE не работает, определяется как QString. Даты хранятся в формате "yyyy.MM.dd".

Последний раз редактировалось SAMOUCHKA; 14.07.2016 в 08:34.
SAMOUCHKA вне форума Ответить с цитированием
Старый 14.07.2016, 08:55   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Не самый эффективный способ. Да и типы полей уже приведенные. Есть INFORMATION_SCHEMA. Или SHOW COLUMNS или подобное, тут уж от СУБД зависит
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.07.2016, 13:06   #3
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
Но вот с типом DATE не работает, определяется как QString. Даты хранятся в формате "yyyy.MM.dd".
чегож не работает, если так и есть, как положили так и получили
come-on вне форума Ответить с цитированием
Старый 14.07.2016, 13:12   #4
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
чегож не работает, если так и есть, как положили так и получили
зачем тогда вообще в SQL задавать типы полей?
и вообще я туда ни чего ложил -таблица пустая.
нужно узнать тип поля
SAMOUCHKA вне форума Ответить с цитированием
Старый 14.07.2016, 13:14   #5
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
зачем тогда вообще в SQL задавать типы полей?
так это у вас надо спростить, зачем - хранятся в формате "yyyy.MM.dd" ? храните как надо и проблем не будет

вообще не понятно зачем вам определять программно типы, вы их так не видите чтоли?

Последний раз редактировалось come-on; 14.07.2016 в 13:18.
come-on вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить названия непустых таблиц из базы levandowskiy SQL, базы данных 2 29.01.2013 17:55
[MySQL] Выбрать названия полей Strangers Помощь студентам 0 27.08.2012 23:47
пропадают имена закладок у текстовых полей reksar Microsoft Office Word 1 01.06.2012 09:17
Добавить имена полей таблицы в Combobox Liones Общие вопросы Delphi 2 12.07.2010 12:02
Получить список таблиц базы SQL Rossoman Microsoft Office Excel 0 06.05.2010 17:39