Russian Qt Forum

Qt => Базы данных => Тема начата: svch от Ноябрь 15, 2006, 18:34



Название: QSqlTableModel(QSqlRelationalTableModel) + SQLite == ???
Отправлено: svch от Ноябрь 15, 2006, 18:34
Вопрос:
Версия Qt4.2. Написал простенькую програмку для вывода/изменения таблиц БД. В качестве СУБД использую SQLite (который идет вместе с Qt). Столбец в базе данных имеет тип INTEGER, в поле этого столбца я ввожу напр. "10" - работает, "10.37" - работает, "qwerty" - работает. Т.е. сохраняется в этом поле типа INTEGER ЭТА ЛАЖА.
В demos/sqlbrowser та же самая картина. Еще интереснее... если вместо ключа с целым типом написать не то (напр. строку "not key"), то строка таблицы с этим ключом не будет отображаться. Люди как сделать так чтобы было нельзя вводить всякий хлам в поля??? C СУБД Firebird все работает как надо!!! Надеюсь все дело в кривоте моих рук:) Помогите плиз!!!

добавлено спустя 2 минуты:

 Люди а с другими СУБД описанных проблем нет в QT?


Название: QSqlTableModel(QSqlRelationalTableModel) + SQLite == ???
Отправлено: Вячеслав от Ноябрь 15, 2006, 21:52
Насколько я помню лайту было пофиг че хранить в поле - лишь-бы размерность(длина поля и данных в байтах) совпадала .... Так-что читай доку про sqlite ......
ЗЫ если нужна нормальная маленькая БД IMHO можно глянуть в сторону embeded FireBird .... Там усе есть ;) И SP и тригеры ;)


Название: QSqlTableModel(QSqlRelationalTableModel) + SQLite == ???
Отправлено: svch от Ноябрь 16, 2006, 10:12
А почему тогда в поле с varchar(10) можно вписать и сохранить и 20 символов?


Название: QSqlTableModel(QSqlRelationalTableModel) + SQLite == ???
Отправлено: DmP от Ноябрь 16, 2006, 11:13
Цитата: "svch"
А почему тогда в поле с varchar(10) можно вписать и сохранить и 20 символов?

Изучайте документации:
http://www.sqlite.org/datatype3.html
Код:

As in SQLite version 2, any column in a version 3 database except an INTEGER PRIMARY KEY may be used to store any type of value. The exception to this rule is described below under 'Strict Affinity Mode'.


Название: Re: QSqlTableModel(QSqlRelationalTableModel) + SQLite == ???
Отправлено: kolob от Июнь 23, 2010, 11:51
Для SQLite можно вообще тип не указывать при создании таблиц, только если конечно вы не будите потом данные переносить на другую СУБД. Все данные хранятся как текстовая информация.