powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Dataset & DataAdapter
7 сообщений из 32, страница 2 из 2
Dataset & DataAdapter
    #35366493
Фотография SQL_Lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А фиг его знает - он в русском переводе имеется
...
Рейтинг: 0 / 0
Dataset & DataAdapter
    #35367357
Фотография Sweet_Alkazar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noisetteуважаемые конферяне, пытаюсь перейти с адо на адо.нет. позвольте мне один только вопрос. могу ли я принципиально загрузить в датасет данные датаадаптером из источника А (напимер, аксесса) и потом датаадаптером из датасета их перенести в получатель Б (например, на сервер)?
то есть по сути реализовать дата флоу таск?
читал про такие методы датаадаптера как
апдейд, инсерт/делит/комманд, но пока не понял, как вытащить данные из датасета...
если у вас вдруг есть пример кода, совсем будет замечательно )))

Можете,
например так(FW 1.0)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            
            da1 = New SqlDataAdapter("SELECT * FROM Messages", CONNECTION_STRING_1)
            da1.Fill(ds_src)

            da2 = New SqlDataAdapter("SELECT * FROM Messages", CONNECTION_STRING_2)
            cb = New SqlCommandBuilder(da2)
            da2.FillSchema(ds_dest, SchemaType.Source)

            For Each row In ds_src.Tables( 0 ).Rows
                ds_dest.Tables( 0 ).LoadDataRow(row.ItemArray, False)
            Next

            da2.Update(ds_dest)
ds_dest.Tables(0).LoadDataRow(row.ItemArray, False) приходится делать, чтобы DataRowState нового
DataRow в ds_dest стало Added и таким образом DataAdapter выполнил бы для этого рау команду вставки.

WYPMAHчто вы за сложности изобретаете? зачем вам датаТейблы если вы просто хотите перенести данные?

алгоритм ваших действий таков:


- создали коннекшн;
- открыли транзакцию;
- выполнили выборку (комманд вам в помощь);
- прочитали выборку в цикле (ридер поможет);
- в цикле выполнили параметризированный инсерт (тот же комманд это умеет);
- закрыли транзакцию.

ВСЁ!
Если у нас два источника данных, то ИМХО такая схема не пройдет. Для каждого источника свой коннектшн, а объект транзактшн ассоциирован с конкретным коннекшном.
---
По-видимому(сам никогда не занимался), перенос данных совсем не простая штука, не зря же в
MS SQL 2005 этим занимается отдельный компонент - Integration Services
...
Рейтинг: 0 / 0
Dataset & DataAdapter
    #35367395
noisette
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот уж транзакции на двух источниках не проблема:
у мну есть клиентский тул - аксесс, который хранит данные локально и коннектится на свервер - чтоб и там данные обновить
вот у мну и стоят в коде параллельные
mdb_cn.BeginTrans
sql_cn.BeginTrans

и коммиты. а если хоть в одном коннекшне возникает ошибка (адо, не адо.нет), то роллбэчу обе транзакции.

работает "на ура"
...
Рейтинг: 0 / 0
Dataset & DataAdapter
    #35367402
noisette
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
изложенного в примере пока не осилил - буду разбираться. пасиб
...
Рейтинг: 0 / 0
Dataset & DataAdapter
    #35367560
Фотография Sweet_Alkazar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noisetteвот уж транзакции на двух источниках не проблема:
у мну есть клиентский тул - аксесс, который хранит данные локально и коннектится на свервер - чтоб и там данные обновить
вот у мну и стоят в коде параллельные
mdb_cn.BeginTrans
sql_cn.BeginTrans

и коммиты. а если хоть в одном коннекшне возникает ошибка (адо, не адо.нет), то роллбэчу обе транзакции.

работает "на ура"
А можно поподробнее, не очень понял всё структуру, особенно как выполняется коммит обоих транзакций
Если написать, что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Try
    trans_1.Commit
Catch ex As exception
    trans_2.Rollback
End Try
Try
    trans_2.Commit
Catch
End Try 
То если, например, первый коммит не удастся, то второй тож откатится,
Но если первый удастся, а второй нет, то первый уже не откатить. Т.е такая схема не подходит
А у вас как?)
...
Рейтинг: 0 / 0
Dataset & DataAdapter
    #35367670
noisette
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вырезав незначащие куски кода, оставил только форму. напоминаю, что это адо для вба в офисе 2003. из таблицы я беру значения полей для каждой записи, пробегаю циклом и формирую запрос. у меня два адо коннекшна - на локальную базу и на сервер

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
Private Sub StartCorrection_Click()
On Error GoTo Err_StartCorrection_Click:

    
    Dim mdb_cn As ADODB.Connection
    Dim sql_cn As ADODB.Connection
    

	...
    
	do	'перебираю записи из таблицы и обрабатываю каждую отдельно	'
                    ... ' готовлю запрос как строку'
                    sql_cn.BeginTrans
                    mdb_cn.BeginTrans
                    
                    On Error GoTo ERR_EXEC_SQL
			
		    sql_cn.execute (<некий скрипт>)
		    mdb_cn.execute (<некий скрипт>)		
  		
                    
                    sql_cn.CommitTrans
                    mdb_cn.CommitTrans

next_record:
	loop                    
  
    
Exit_StartCorrection_Click:
   On Error Resume Next
   ... ' закрываем коннекшны и рекордсеты'
   Exit Sub
    
Err_StartCorrection_Click:
    MsgBox Err.Description, vbCritical
    Err.Clear
    GoTo Exit_StartCorrection_Click

ERR_EXEC_SQL:
    On Error GoTo Err_StartCorrection_Click
    
    If mdb_cn.Errors.Count >  0  Or sql_cn.Errors.Count >  0  Then
    
        mdb_cn.RollbackTrans
        sql_cn.RollbackTrans
        
        
	...	'логирование ошибки    '    
        
        mdb_cn.Errors.Clear
        sql_cn.Errors.Clear
    
        
        
    End If
    Resume next_record
    
    
End Sub

в общем так вот
...
Рейтинг: 0 / 0
Dataset & DataAdapter
    #35367749
Фотография Sweet_Alkazar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, подход понял)
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Dataset & DataAdapter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]