Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перенос данных из одной базы в другую, Перенос данных из одной базы в другую  
:(
    Опции темы
frodo17
Дата 5.11.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.11.2007

Репутация: нет
Всего: нет



Есть две базы с одинаковой структорой( на разных компах, access 97 ). Необходимо переносить "объект" с одной БД в другую ( информация об объекте в 3 таблицах ). Это мой первый проект на 
c#(читаю книги и пока что путаюсь в терминах smile ). На данный момент алгоритм следующий: выбираю с исходной бд данные в dataset через dataadapter ( создаю в dataset 3 таблицы ), и записываю их в xml на носитель ( сети между компами нет ). На другом компе нахожу нужные значения id таблиц в которые буду добавлять инфу... Подскажите оптимальный способ вставки данных из xml в базу. В таблицах много полей и не хочется делать вставку новой строки + вставки значений по полям( в коде ). Всетаки структура баз одинаковая, помогите этим воспользоваться smile.
 Как я понимаю приблизительный алгоритм 

da1.Fill(ds1)
ds1.WriteXml()
ds2.ReadXml()
da2.Update(ds2)

Создаю пустой ds2 считываю Xml. Создаю da2 связываю его с базой, задаю SelectCommand. Для da2.Update( ) необходим InsertCommand, как в нем указать sql запрос на добавление для трех таблиц ? Через inner join? Поправте пож. если я ошибаюсь ( а мне кажется что ошибаюсь smile) . Т.е. если можно чуть поподробнее этот момент

ds2.ReadXml()
da2.Update(ds2)

Заранее спасибо.
PM MAIL   Вверх
thomas
Дата 5.11.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



frodo17, 
Приветствую на форуме.  smile 
В принципе подход правильный.
Единственное что посоветовал бы
это вместо 
Цитата
Создаю пустой ds2
 я бы сначала создал da2 и выполнил запрос к базе с ложным условием(select * from myTable where id=-1), что бы получить в ДатаСет готовые таблицы(наименования полей, типы данных) но пустые.
Тогда после этого можно считать данные из xml и выполнить Insert данных в бд2. Для формирования команды можно воспользоваться следующим
Код

cmdBuild = new SqlCommandBuilder(dbDa);
dbDa.InsertCommand = cmdBuild.GetInsertCommand();
dbDa.Update(ds.Tables[tableName]);

он сам тебе сгенерит нужную команду.
Удачи.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
frodo17
Дата 7.11.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.11.2007

Репутация: нет
Всего: нет



Продолжаю копать дальше  smile .

при использовании CommandBuilder, в InsertCommand.ComandText запрос вида 
Цитата

INSERT INTO Table ( id,f1,f2... )
VALUES ( ?,?,?.. )


в моем dataset 3 таблицы, по одной записи в каждой. id обновляю до update. Подскажите как можно вставить запись из таблицы dataset в таблицу базы,  что бы не заморачиваться с параметрами ( полей в таблицах довольно много ).  
PM MAIL   Вверх
thomas
Дата 7.11.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



frodo17, 
Цитата

Подскажите как можно вставить запись из таблицы dataset в таблицу базы,  что бы не заморачиваться с параметрами 

Выполнить команду
Код

dbDa.Update(ds.Tables[tableName]);

тебе ж не надо писать команду в ручную и подставлять в нее значения.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
alik_voodoo
Дата 8.11.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 31.10.2006

Репутация: нет
Всего: нет



Для переноса данных из одной базы в другую, если данных много, есть специальный объект BulkCopy называется.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.