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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> синхронизация двух dataset 
:(
    Опции темы
mal
Дата 16.8.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. У меня стоит задача написать программу для обмена данными. Данные хранятся на SQL сервере. Решил решить её так:
1. Написал запросы, кототрые выгружают данные в dataset
Код

SqlDataAdapter da1 = new SqlDataAdapter("SELECT * FROM division", Conn);
da1.Fill(ds, "division");

2. Затем сохраняю данные в xml
Код

ds.WriteXml(myFileStream, XmlWriteMode.WriteSchema);

3. Затем читаю xml файл
Код

ds.ReadXml(myFileStream, XmlReadMode.ReadSchema);

4. Получаю новый dataset
Код

SqlDataAdapter da1 = new SqlDataAdapter("SELECT * FROM devices", Conn);
da1.Fill(new_ds, "devices");

5. Теперь нужно записать данные в new_ds из ds.  У обоих ds есть PrimaryKey devices_id
Вот этот шаг у меня не получается.
Помогите, чем сможете.

Добавлено через 4 минуты и 49 секунд
Возможно надо использовать метод Merge, но у меня не получается.

Это сообщение отредактировал(а) mal - 16.8.2007, 16:18
PM   Вверх
Experimenter
Дата 16.8.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Возможно надо использовать метод Merge, но у меня не получается.

А что именно не получается?
Как вариант: можно через DataRow запись организовать.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
mal
Дата 17.8.2007, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



После выполнения
Код

new_ds.Merge(ds);

строки не обновляются, а добавляются.
А мне нужно синхронизировались таблицы по PrimaryKey.
PM   Вверх
Idsa
Дата 17.8.2007, 08:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



Попробуй перед Fill() для адаптера установить свойство adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
mal
Дата 17.8.2007, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо БОЛЬШОЕ. Вроде все получилось.
Прочитал
Пользователь должен быть осведомлен о возможных побочных эффектах, например о конфликтах с инструкцией SET FMTONLY ON. Что это?
PM   Вверх
Idsa
Дата 17.8.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



Цитата(mal @  17.8.2007,  08:39 Найти цитируемый пост)
Что это? 

В следующем примере состояние параметра SET FMTONLY изменяется на ON, после чего выполняется инструкция SELECT. В результате этой настройки инструкция возвращает только сведения о столбце; строки с данными не возвращаются.
Код

SET FMTONLY ON;
GO
USE AdventureWorks;
GO
SELECT * 
FROM HumanResources.Employee;
GO
SET FMTONLY OFF;
GO
 



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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