Russian Qt Forum

Qt => Базы данных => Тема начата: gra от Июнь 21, 2009, 19:38



Название: Создание таблицы средствами Qt
Отправлено: gra от Июнь 21, 2009, 19:38
Приветствую комьюнити !

Есть ли какая-то возможность создать таблицу средствами Qt не прибегая к SQL'ному  "create table .... " ?


Название: Re: Создание таблицы средствами Qt
Отправлено: Пантер от Июнь 22, 2009, 06:12
А зачем? o_O


Название: Re: Создание таблицы средствами Qt
Отправлено: Barmaglodd от Июнь 22, 2009, 07:17
Безусловно! Изучаешь формат хранения данных той субд, в которой хочешь создать таблицу, и пишешь нужные структуры руками на диск.


Название: Re: Создание таблицы средствами Qt
Отправлено: gra от Июнь 22, 2009, 22:15
Если честно, я привык работать с полноценными ORM - полностью абстрагируясь от конкретных БД.

Задача стоит в том, чтобы дать пользователю при желании пользоваться не только sqlite но и mysql\pgsql в зависимости от того что у него установлено.

Спасибо за ответы, похоже придется действительно реализовывать все отдельно для каждой.


Название: Re: Создание таблицы средствами Qt
Отправлено: break от Июнь 23, 2009, 02:09
Цитировать
полностью абстрагируясь от конкретных БД
Я могу ошибаться но вроде SQL92 содержит "create table" и абстрагирован от конкретной БД и поддерживается всеми существующими БД. Зачем что-то еще? Если не так поправьте.


Название: Re: Создание таблицы средствами Qt
Отправлено: gra от Июнь 23, 2009, 03:22
Зачем что-то еще?

Если честно, я не спец но к примеру, тут - http://www.sqlite.org/datatype3.html нет ни слова про тип bool\boolean, хотя в mysql он есть (синоним для tinyint).
Не думаю, что отличия на этом заканчиваются.

Последнее время я пишу на Ruby, в нем есть отличный ORM - ActiveRecord, для того чтоб создать таблицу, нужно написать что-то вроде:
Код:
create_table :users do |t|
  t.string :name
  t.datetime :created_at
  t.boolean :admin
end



Название: Re: Создание таблицы средствами Qt
Отправлено: break от Июнь 23, 2009, 05:06
Цитировать
Если честно, я не спец но к примеру, тут - http://www.sqlite.org/datatype3.html нет ни слова про тип bool\boolean, хотя в mysql он есть (синоним для tinyint).

Не понимаю вашей логики почему в доке по sqlite должно быть описание типов MySql???

Цитировать
Последнее время я пишу на Ruby, в нем есть отличный ORM - ActiveRecord
И что будет если я этим механизмом попытаюсь создать поле в БД которая не поддерживает указанный тип?


Название: Re: Создание таблицы средствами Qt
Отправлено: gra от Июнь 23, 2009, 06:09
Не понимаю вашей логики почему в доке по sqlite должно быть описание типов MySql???

Перечитайте топик начиная с первого поста.

И что будет если я этим механизмом попытаюсь создать поле в БД которая не поддерживает указанный тип?

А как Вы думаете? ActiveRecord поддерживает MySQL, PostgreSQL, SQLite, Oracle, SQLServer и DB2.


Название: Re: Создание таблицы средствами Qt
Отправлено: Rcus от Июнь 23, 2009, 06:16
QtSql достаточно низкоуровневый слой абстракции, а Qt - фреймворк общего назначения, потому не представляет обобщенного синтаксиса для запросов


Название: Re: Создание таблицы средствами Qt
Отправлено: gra от Июнь 23, 2009, 06:33
QtSql достаточно низкоуровневый слой абстракции

Да, спасибо, я уже разобрался.




Название: Re: Создание таблицы средствами Qt
Отправлено: Admin от Июнь 23, 2009, 09:21
ORM в QT я думаю еще долго не будет, не тот уровень. Для Ruby и Django ORM хорош, но шаг в сторону - расстрел.


Название: Re: Создание таблицы средствами Qt
Отправлено: sikuda от Июль 03, 2009, 13:15
Так в чем вопрос - напишите сами. Qt как раз средство разработки...
Или про запустите пример SQL Browser (для sqlite) и напишите там CREATE TABLE...


Название: Re: Создание таблицы средствами Qt
Отправлено: CroCIV от Август 05, 2009, 15:19
Если честно, я не спец но к примеру, тут - http://www.sqlite.org/datatype3.html нет ни слова про тип bool\boolean, хотя в mysql он есть (синоним для tinyint).

в стандарте SQL92 также есть описание стандартных типов данных. Если какой-то SQL-сервер не поддерживает тип данных, указанных в стандарте прошедшего тысячелетия, то не пользуйтесь этим SQL-сервер, т.к. он не SQL  ;D

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