программно создать структуру БД
От: Павел А.Ануфриков Россия  
Дата: 25.01.11 20:12
Оценка:
Коллеги, подскажите. Нужно создать в базе данных структуру таблиц согласно DataSet. Доступ к БД абстрактный, посредством DBConnection. Не могу найти никаких средств для этого, собираюсь писать код, который сгенерирует CREATE TABLE запрос по DataSet. А есть правильный способ?
Re: программно создать структуру БД
От: Lloyd Россия  
Дата: 25.01.11 20:22
Оценка: 3 (1)
Здравствуйте, Павел А.Ануфриков, Вы писали:

ПАА>Коллеги, подскажите. Нужно создать в базе данных структуру таблиц согласно DataSet. Доступ к БД абстрактный, посредством DBConnection. Не могу найти никаких средств для этого, собираюсь писать код, который сгенерирует CREATE TABLE запрос по DataSet. А есть правильный способ?


Правильный способ — создавать базу данных скриптами во время установки приложения.
Re: программно создать структуру БД
От: RushDevion Россия  
Дата: 25.01.11 20:26
Оценка: 4 (2) +1
Здравствуйте, Павел А.Ануфриков, Вы писали:

ПАА>Коллеги, подскажите. Нужно создать в базе данных структуру таблиц согласно DataSet. Доступ к БД абстрактный, посредством DBConnection. Не могу найти никаких средств для этого, собираюсь писать код, который сгенерирует CREATE TABLE запрос по DataSet. А есть правильный способ?


Здесь гляньте пример.
Другой вариант — DataSet можно вроде в XML сконвертить и написать для него XSLT, либо макросами обработать до SQL-скрипта (автоматизация йопт)

И опять Lloyd опередил с правильным ответом
Re[2]: программно создать структуру БД
От: Павел А.Ануфриков Россия  
Дата: 25.01.11 21:11
Оценка:
L>Правильный способ — создавать базу данных скриптами во время установки приложения.

Во время установки неизвестно ни расположение БД, ни тип СУБД. Пользователь выбирает базу в процессе работы. После этого нужно создать её структуру.

Спасибо!
Re[3]: программно создать структуру БД
От: Lloyd Россия  
Дата: 25.01.11 21:12
Оценка:
Здравствуйте, Павел А.Ануфриков, Вы писали:

L>>Правильный способ — создавать базу данных скриптами во время установки приложения.


ПАА>Во время установки неизвестно ни расположение БД, ни тип СУБД. Пользователь выбирает базу в процессе работы. После этого нужно создать её структуру.


Вот когда создается база данных, тогда и создавайте схему.
Re[4]: программно создать структуру БД
От: Павел А.Ануфриков Россия  
Дата: 25.01.11 21:33
Оценка:
L>Вот когда создается база данных, тогда и создавайте схему.

Не понял, к сожалению. Схема базы данных поставляется с приложением (xsd или DataSet, не важно). Когда пользователь захочет сгрузить данные в БД, он конфигурирует подключение, и тогда в его базе должны появиться таблицы по моей схеме.
Re[5]: программно создать структуру БД
От: Lloyd Россия  
Дата: 25.01.11 21:42
Оценка: 3 (1)
Здравствуйте, Павел А.Ануфриков, Вы писали:

L>>Вот когда создается база данных, тогда и создавайте схему.


ПАА>Не понял, к сожалению. Схема базы данных поставляется с приложением (xsd или DataSet, не важно). Когда пользователь захочет сгрузить данные в БД, он конфигурирует подключение, и тогда в его базе должны появиться таблицы по моей схеме.


Не, датасет — это схема тех данных, которые нужны пользвателю. В общем случае эа схема отличается от схемы даных в базе данных. И потому не стоит возлагать на датасет задачу хранения схемы базы данных.
Если вам все-таки необходимо из приложения создавать схему базы данных, используйте для этого простые sql скрипты и запускайте их.
Re[6]: программно создать структуру БД
От: Павел А.Ануфриков Россия  
Дата: 25.01.11 22:17
Оценка:
L>Не, датасет — это схема тех данных, которые нужны пользвателю. В общем случае эа схема отличается от схемы даных в базе данных. И потому не стоит возлагать на датасет задачу хранения схемы базы данных.
L>Если вам все-таки необходимо из приложения создавать схему базы данных, используйте для этого простые sql скрипты и запускайте их.

Идею понял, спасибо. Почему хочу избежать хранения структуры БД в скрипте — по причине различного синтаксиса для различных БД. При программной генерации скрипта или запроса можно различия учесть, параметризировав генератор. Поэтому хотел за основу взять xsd схему и по ней строить запросы уже с учетом SQL диалекта. А для удобства решил использовать DataSet. Неверно?
Re[7]: программно создать структуру БД
От: Lloyd Россия  
Дата: 25.01.11 22:21
Оценка:
Здравствуйте, Павел А.Ануфриков, Вы писали:

L>>Если вам все-таки необходимо из приложения создавать схему базы данных, используйте для этого простые sql скрипты и запускайте их.


ПАА>Идею понял, спасибо. Почему хочу избежать хранения структуры БД в скрипте — по причине различного синтаксиса для различных БД. При программной генерации скрипта или запроса можно различия учесть, параметризировав генератор. Поэтому хотел за основу взять xsd схему и по ней строить запросы уже с учетом SQL диалекта. А для удобства решил использовать DataSet. Неверно?


Такая унификация автоматически означает, что вы сможете использовать только некоторое подмножество возмжностей сервера из вашего приложения.
Вам действительно это надо?
Re[8]: программно создать структуру БД
От: Павел А.Ануфриков Россия  
Дата: 25.01.11 22:32
Оценка:
L>Такая унификация автоматически означает, что вы сможете использовать только некоторое подмножество возмжностей сервера из вашего приложения.
L>Вам действительно это надо?

Да, это оправдано. Суть приложения — генерируется поток данных, который просто складывается в БД. Никакой другой работы приложение с БД не выполняет. Примером может быть мониторинг параметра во времени, например, значение температуры каждую минуту.
Re[9]: программно создать структуру БД
От: Lloyd Россия  
Дата: 25.01.11 22:40
Оценка:
Здравствуйте, Павел А.Ануфриков, Вы писали:

L>>Такая унификация автоматически означает, что вы сможете использовать только некоторое подмножество возмжностей сервера из вашего приложения.

L>>Вам действительно это надо?

ПАА>Да, это оправдано. Суть приложения — генерируется поток данных, который просто складывается в БД. Никакой другой работы приложение с БД не выполняет. Примером может быть мониторинг параметра во времени, например, значение температуры каждую минуту.


Тога последуйте совету RushDevion-а: через GetXmlSchema вытащите xsd датасета и через xslt сгенерите скрипт на создание.
Re[3]: программно создать структуру БД
От: _FRED_ Черногория
Дата: 26.01.11 07:49
Оценка:
Здравствуйте, Павел А.Ануфриков, Вы писали:

ПАА>Во время установки неизвестно ни расположение БД, ни тип СУБД. Пользователь выбирает базу в процессе работы. После этого нужно создать её структуру.


А если вам "подсунут" odbc-провайдер к текстовому файлу, например, как будете структуру создавать? Нет, так не делается.

Обычно, вы у себя знаете некое множество СУБД, с которыми сможете работать (на которых сможете создавать базы данных необходимой вам структуры). Под такое конечное и заранее известное множество (даже и большое) уже можно решать вашу задачу. А уж как именно: писать под каждую СУБД скрипты или xml-преобразования или использовать какой-нить универсальный код, умеющий создавать DDL под нжную вам — решайте как удобнее (первый способ более громоздкий, менее гибкий, зато позволит лучше использовать возможности СУБД).

В принципе, DDL не такой уж и большой, вполне можно и самостоятельно выписать. Тем более, учитывая, что и в самом DataSet-e не так много всего и используется.
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.