Добавление таблицы в базу без использования SQL

Форум посвящён работе с базами данных в .NET.

Модератор: Ramzes

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Добавление таблицы в базу без использования SQL

Сообщение Ronin » 23.10.2007 (Вт) 16:02

Доброго времени суток!

У меня такая задача:

у меня база разделена на 2 аксессовские. Теперь появилась необходимость совместить их. То есть перенести таблицы из одной базы в другую со следующей версии автоматом. SQL запросом сложно в плане того что нужно описывать структуру таблиц вручную, вернее большее неудобство доставляет определение типов в формате sql. Ведь наверняка есть способ типа DataSet.Tables.Add DataSet2.Tables(0)
Но так не работает. Кто знает как вообще можно сделать это? Срочно
Заранее спасибо!
С уважением,
Игорь Шувалов aka Ronin

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 24.10.2007 (Ср) 1:37

Ronin
Приветствую.
Не совсем понятна ситуация.
у меня база разделена на 2 аксессовские

Что это означает? Можно ли понять это так, что одинаковый набор таблиц содержиться в двух файлах mdb? Или это две разные базы, с разными таблицами и связями?
Потому как вот это высказывание наводит на подобные размышления
То есть перенести таблицы из одной базы в другую со следующей версии автоматом.

И что здесь подразумевается под "следующей версией"?
Если файлы mdb содержат одинаковый набор таблиц(с одинаковыми полями) но с разным наполнением данными, то осмелюсь предположить, что можно просто сделать выборку из таблицы одной базы в таблицу Датасет, записать это дело в xml(датасет имеет соответствующие методы), потом создать датасет для другой базы, создать в нем соответствующую пустую таблицу(простой запрос select с условием where, которое изначально не выполнимо) и считать в неё данные из xml, а потом обновить базу. В результате должно получиться слияние данных из этой базы и из второй. Только тут один момент как организован первичный ключ? Нельзя допустить дубликаты ключей. Если автонумерация, то проблем не будет.
Met vriendelijke groetjes
VS2008 Pro FW3.5 SP1

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Сообщение Ronin » 24.10.2007 (Ср) 7:25

Нет, база "разделена" на две, то есть одни таблицы в одной базе, другие в другой. Связи между ними нет, тоесть они есть и устанавливаются тупо запросами внутри программы. Есть только ключевые поля.. Более ясно теперь?
С уважением,
Игорь Шувалов aka Ronin

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 24.10.2007 (Ср) 10:19

Если не смущает необходимость использовать COM, то можно посмотреть в сторону ADOX

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 24.10.2007 (Ср) 11:54

Ronin
Тогда почему бы вам не воспользоваться импортом данных внутри самого Access? Открой одну базу и импортируй в нее все таблицы из другой. И усё. Юзай дальше из программы только эту "утяжеленную" базу.
Кстати, там же(в Access) можно установить и связи между старыми и новыми таблицами (если нужно).

ЗЫ с ADOX можно вообще создать новую базу с "нуля"
Met vriendelijke groetjes
VS2008 Pro FW3.5 SP1

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Сообщение Ronin » 25.10.2007 (Чт) 10:49

Спасибо за советы.

Я уже сделал.

Thomas
Я же написал, со следующей версией. Тоесть мне нужно программно это сделать у конечных пользователей, что-бы все данные были сохранены.

Сделал я так.. Из структуры базы вытянул всю информацию о таблицах, колонках и типах, создал соответствующие запросы SQL " CREATE TABLE...". Затем тупо строчка в строчку формировал запросы SQL "Insert into..." и переписал всю базу... Не знаю на сколько это правильно, но все работает! =)
С уважением,
Игорь Шувалов aka Ronin


Вернуться в ADO.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList