div.main {margin-left: 20pt; margin-right: 20pt}
Введение в ADO+ (FAQ)
Сартин Вячеслав
ADO+ - это новое поколение технологии доступа к данным от Microsoft.
ADO+ была разработана с учетом распределенных и интернет приложений. ADO+
обеспечивает мощную поддержку XML и автономную обработку данных.
В настоящие время ADO+ доступна как часть NGWS платформы. В Visual
Studio.NET реализована полная поддержка для ADO+.
Основное отличие ADO+ от ADO - это отсутствие объекта Recordset. По
заявлению Microsoft, ADO+ не заменяет, а дополняет общую технологию
доступа к данным, вы сможете использовать вместе, ADO и ADO+ в вашем
приложении.
Обратите внимание: что Namespaces, это только слова из библиотеки
NGWS. Вам потребуется импортировать библиотеки ADO перед использованием их
классов, наподобие Java или C/C++.
Ниже перечислены имена общего доступа в Namespaces:
System.Data
System.Data.ADO
System.Data.SQL
System.Data.XML
System.Data.SQLTypes
Этот примет позволит получить Вам представление о том как создавать
каталоги и подкаталоги.
Основные объекты ADO+:
Connection
Command
DataReader
DataSet
DataSetCommand
Способ подключения к базе данных очень похож на используемый в ADO. Для
этого используется объект Connection. Посмотрите на фрагмент кода
приведенный ниже: Dim cnn As ADOConnection
cnn = New ADOConnection("OLEDB_connection_string")
cnn.Open()
cnn.Close()
Объект Command используется также как и в ADO. Dim cmd As ADOCommand
cmd = New ADOCommand("my_query", cnn)
cmd.Execute()
cmd.CommandText = "new_query"
Вы можете выбирать записи используя объект DataReader объекта
Command. Dim dr As ADODataReader
cmd.Execute(dr)
Do While dr.Read()
Response.Write(dr("field1"))
Loop
dr.Close()
Вы можете выполнять хранимые процедуры как обычный запрос. В
приведенном примере показано выполнение хранимой процедуры. Dim cmd As ADOCommand
Dim p As ADOParameter
P = New ADOParameter("name", type, width)
p.Value = "myValue"
cmd.Parameters.Add(p)
cmd.Execute()
DataSetCommand подобна объекту Command, но используется для заполнения
набора данных. Dim dscmd As ADODataSetCommand
Dim ds As ADODataSet
dscmd = New ADODataSetCommand("sql", cnn)
ds = New DataSet()
dscmd.FillDataSet(ds, "recordset_name_in_ds")
В приведенном примере, DataSetCommand открывает соединение как обычно.
Метод FillDataSet используется для заполнения набора данных.
Dim row As DataRow
For Each row In ds.Tables("recordset_name_in_ds").Rows
row.Columns("field1").ToString()
Next
Dim row As DataRow
row = ds.Tables("recordset_name_in_ds").NewRow()
row("field1") = "value1"
row("field1") = "value1"
ds.Tables("recordset_name_in_ds").Rows.Add(row)
dscmd.Update(ds, "recordset_name_in_ds")
Dim row As DataRow
row = ds.Tables("recordset_name_in_ds").Rows(i)
row("field1") = "value1"
row("field1") = "value1"
dscmd.Update(ds, "recordset_name_in_ds")
row = ds.Tables("recordset_name_in_ds").Find("Field1=value1")
ds.Tables("recordset_name_in_ds").Rows(i).Delete
dscmd.Update(ds, "recordset_name_in_ds")
Вы можете фильтровать данные согласно определенному условию, используя
свойство RowFilter объекта DataView. Dim view As DataView
view = new DataView(ds.Tables("users"))
view.RowFilter = "user_id='bipin'"
Для обработки ошибок можно применить несколько способов. Наиболее часто
для этого применяется блок Try...Catch. ADO+ обеспечивает механизм
способный устанавливать собственное сообщение об ошибке для каждой
строки. Dim cnn As ADOConnection
Dim cmd As ADODataSetCommand
Dim ds As DataSet
Dim errors As DataRow()
Public Sub Page_load(sender as Object, evt as EventArgs)
cnn = New ADOConnection("dsn=sample")
cnn.Open()
ds = New DataSet()
cmd = New ADODataSetCommand("select * from users", cnn)
cmd.FillDataSet(ds, "users")
ds.Tables("users").Rows(0).RowError = "Error 1"
ds.Tables("users").Rows(1).RowError = "Error 2"
If ds.Tables("users").HasErrors Then
errors = ds.Tables("users").GetErrors()
For i = 0 To errors.Length -1
Response.Write("<BR>")
Response.Write(errors(i), ("user_id").ToString() & _
"----" & errors(i).RowError)
Response.Write("<BR>")
Next
End If
End Sub
В приведенном коде устанавливается сообщение об ошибке в зависимости от
результата проверки. Это позволяет Вам использовать общий обработчик
ошибок. Так же, обратите внимание на то, что свойство RowError
устанавливается в ADO+ если имеется реальная ошибка в базе данных.
Для управления транзакциями в ADO+ существуют методы BeginTransaction,
CommitTransaction и RollBackTransaction. Эти методы очень похожи на
эквивалентные в ADO. Посмотрите на ниже приведенный пример: Try
cnn.Open()
cnn.BeginTransaction()
cmd = New ADOCommand("insert into users" & _
"(user_id, name, password, email)" & _
" values('aaa','aaa','aaa','aaa')",cnn)
cmd.Execute()
cmd.CommandText = "insert into users" & _
"(user_id,name,password,email)" & _
" values('bbb','bbb','bbb','bbb')"
cmd.Execute()
cnn.CommitTransaction()
Catch myException As Exception
cnn.RollBackTransaction()
Response.Write(myException.ToString())
End Try
|