Russian Qt Forum

Qt => Базы данных => Тема начата: slava_d200 от Январь 08, 2013, 00:54



Название: Как получить структуру таблицы SQLite
Отправлено: slava_d200 от Январь 08, 2013, 00:54
Прошу помощи.
Есть ли в QT возможность получения структуры таблицы в SQLite
c перечислениями полей и типов этих полей.


Название: Re: Как получить структуру таблицы SQLite
Отправлено: JayFOX от Январь 08, 2013, 01:15
Код:
QSqlRecord QSqlDatabase::record ( const QString & tablename ) const


Название: Re: Как получить структуру таблицы SQLite
Отправлено: slava_d200 от Январь 18, 2013, 18:45
СПС.

А как определить какой длины это поле (если оно строковое)
или если числовое, то длина и кол-во знаков после запятой.

На данны момент интересует работа с SQLite


Название: Re: Как получить структуру таблицы SQLite
Отправлено: LisandreL от Январь 18, 2013, 21:16
А как определить какой длины это поле (если оно строковое)
или если числовое, то длина и кол-во знаков после запятой.
А справку почитать никак?
Код:
QSqlRecord QSqlDatabase::record ( const QString & tablename ) const
=>
QSqlField QSqlRecord::field ( int index ) const
=>
int QSqlField::length () const
int QSqlField::precision () const

Правда SQLite на такие ограничения плевать хотела.


Название: Re: Как получить структуру таблицы SQLite
Отправлено: Old от Январь 18, 2013, 21:22
Правда SQLite на такие ограничения плевать хотела.
Ага. Она легко пишет строку в числовое поле и дату в строковое. Ведь у нее типы полей декларативные.


Название: Re: Как получить структуру таблицы SQLite
Отправлено: slava_d200 от Январь 18, 2013, 23:02
То то и оно что в SQLite я всегда имею тип String
длина = -1
разрядность = -1

вот по этому то и задал вопрос как реально получить эти показатели.


Название: Re: Как получить структуру таблицы SQLite
Отправлено: Old от Январь 18, 2013, 23:11
вот по этому то и задал вопрос как реально получить эти показатели.

Можно попробовать typeof:
Код
SQL
CREATE TABLE test (i integer, r real, t text, b blob);
SELECT rowid, typeof(i), typeof(r), typeof(t), typeof(b) FROM text;
 
Но длины так тоже не получить.

Или смотреть на его API.


Название: Re: Как получить структуру таблицы SQLite
Отправлено: Nimbus от Январь 20, 2013, 10:13
Код:
$ echo "PRAGMA table_info(\"clients\");" | sqlite3 ~/ololo.sqlite
0|id|INTEGER|1||1
1|created|DATETIME|0||0
2|name|VARCHAR|0||0
3|dob|DATE|0||0
4|height|INTEGER|0||0
5|weight|FLOAT|0||0
6|purpose|TEXT|0||0
7|disease|TEXT|0||0
8|limits|TEXT|0||0
По-моему распарсить выхлоп sqlite не так уж и сложно ;-)