Visual Basic, .NET, ASP, VBScript
 

   
 
Описание для автора не найдено
 
     
   
 
Что такое ADO+?

ADO+ - это новое поколение технологии доступа к данным от Microsoft. ADO+ была разработана с учетом распределенных и интернет приложений. ADO+ обеспечивает мощную поддержку XML и автономную обработку данных.

В настоящие время ADO+ доступна как часть NGWS платформы. В Visual Studio.NET реализована полная поддержка для ADO+.

Чем отличается ADO+ от ADO?

Основное отличие ADO+ от ADO - это отсутствие объекта Recordset. По заявлению Microsoft, ADO+ не заменяет, а дополняет общую технологию доступа к данным, вы сможете использовать вместе, ADO и ADO+ в вашем приложении.

Какой общий доступ к данным Namespaces в NGWS?

Обратите внимание: что Namespaces, это только слова из библиотеки NGWS. Вам потребуется импортировать библиотеки ADO перед использованием их классов, наподобие Java или C/C++.

Ниже перечислены имена общего доступа в Namespaces:

  • System.Data
  • System.Data.ADO
  • System.Data.SQL
  • System.Data.XML
  • System.Data.SQLTypes
Какие основные объекты в ADO+?

Этот примет позволит получить Вам представление о том как создавать каталоги и подкаталоги.

Основные объекты ADO+:

  • Connection
  • Command
  • DataReader
  • DataSet
  • DataSetCommand
Как подключится к базе данных?

Способ подключения к базе данных очень похож на используемый в ADO. Для этого используется объект Connection. Посмотрите на фрагмент кода приведенный ниже:

Dim cnn As ADOConnection
cnn = New ADOConnection("OLEDB_connection_string")

cnn.Open()
cnn.Close()
Как использовать объект Command?

Объект Command используется также как и в ADO.

Dim cmd As ADOCommand
cmd = New ADOCommand("my_query", cnn)
cmd.Execute()

cmd.CommandText = "new_query"
Как использовать объект Command для получения записей?

Вы можете выбирать записи используя объект DataReader объекта Command.

Dim dr As ADODataReader
cmd.Execute(dr)
Do While dr.Read()
    Response.Write(dr("field1"))
Loop
dr.Close()
Как использовать объект Command для выполнения хранимых процедур?

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

Dim cmd As ADOCommand
Dim p As ADOParameter
P = New ADOParameter("name", type, width)
p.Value = "myValue"
cmd.Parameters.Add(p)
cmd.Execute()
Что такое DataSetCommand и DataSet?

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 используется для заполнения набора данных.

Как работать с DataSet?
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
 
     

   
   
     
  VBNet рекомендует