Реферат: Работа с объектами большого объема в MS SQL и ADO

'Создание записи

Dim dr As DataRow = ds.Tables("UState").NewRow()

dr("username") = UserName

dr("b_state") = b

'Добавление записи

ds.Tables("UState").Rows.Add(dr)

Else

'Обновление записи

Dim dr As DataRow = ds.Tables("UState").Rows(0)

dr("b_state") = b

End If

'Изменения записываем в базу

da.Update(ds, "UState")

End Sub

Надо сказать, что этот способ будет работать, только если в таблице имеется первичный ключ. В моем случае, логичнее всего он смотрится на поле username. При отсутствии ключа в момент выполнения команды Update вы получите следующую ошибку:

Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

В документации по Oracle утверждается, что обновление данных лучше производить в явных транзакциях.

ПРИМЕЧАНИЕ

По умолчанию соединение открывается в режиме неявной транзакции, в котором транзакция начинается в момент выполнения первой команды после окончания предыдущей транзакции. Этот режим аналогичен установке SET IMPLICIT_TRANSACTIONS ON в MS SQL Server.

Это связано с тем, что транзакция, в контексте которой производится обновление, автоматически подтверждается в момент выполнения команды Update. Так что если вы затем захотите отменить изменения – это вам так просто не удастся сделать. Проблема решается с помощью объекта Transaction, пример использования которого, как и пример сохранения больших данных с помощью хранимых процедур, можно найти по адресу http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q322796.

Ну вот, пожалуй, и все. Буду рад, если эта статья помогла вам в работе с большими объектами.

К-во Просмотров: 676
Бесплатно скачать Реферат: Работа с объектами большого объема в MS SQL и ADO