1. Как заполнить DataGrid средствами ADO.Net, используя OLE DB Interbase Provider.

 

Для начала создадим новый проект VB.Net Оконное приложение (Add->New Project->Visual Basic Project-> Window Application).

 

Поместим на форму компонент DataGrid, назовем его myDatagrid.

Свойство Dock установим в значение Fill, для того чтобы компонент изменял свой размеры в соответствии с размерами формы. Теперь давайте напишем класс, который будет работать с нашим компонентом.

 

Подключим пространство имен OLE DB:

 

Imports System.Data.OleDb

 

Переименуем Class1 в TDataSetObject,объявим необходимые переменные для заполнения DataGrid. Нам понадобятся: подключение к базе данных, команда на выборку данных, и объект DataAdapter для заполнения объекта DataSet. Для задания параметров подключения будем использовать файл UDL.  Для этих целей в Windows предусмотрен встроенный редактор. Если вы создадите файл с расширением udl и запустите его на выполнение, то откроется окно редактора для задания параметров подключения. Первые две строки файла являются обязательными:

 

[oledb]

; Everything after this line is an OLE DB initstring

 

После них идут свойства инициализации провайдера: 

 

Provider=LCPI.IBProvider; - OLE DB Interbase Provider

Password=masterkey;

User ID=sysdba;

Persist Security Info=True;

Auto Commit=True;

Data Source=e:\database\employee.gdb; - база данных Interbase

 

Опишем переменные и создадим экземпляры объектов ADO.Net

 

Public Class TDataSetObject

 

'объекты OleDb

Public mConnection As OleDbConnection 'Поключение

      Public mSelectCmd As OleDbCommand     'Команда на выборку данных

      'Data Adapter – для заполнения DataSet-a

      Public mDataAdapter As OleDbDataAdapter

      'Data set

      Public mDataSet As OleDbDataAdapter

 

      Public Sub New()

         Try

             'создаем новое подключение из udl файла

             mConnection = New OleDbConnection("file name=employee.udl")

             'Команда на выборку данных

             mSelectCmd = New OleDbCommand("select * from employee",mConnection)

             'Конфигурируем DataAdapter

             mDataAdapter = New OleDbDataAdapter(mSelectCmd)

         Catch e as Exception

               MsgBox e.Message

         End Try

      End Sub

 

End Class

     

      Теперь давайте разберемся, как передать данные из таблицы Interbase компоненту DataGrid. Для этого необходимо установить свойство DataSource этого компонента, оно может принимать различные источники строк, в том числе DataSet и DataSet.Table. Нас будет интересовать первый вариант задания источника. Объявим функцию, которая будет производить необходимые действия и возвращать DataSet для заполнения нашего компонента.

После объявлений и конструктора пишем:

 

Public Function FillDataSet()

       Try

    'новый DataSet, который будет источником строк для DataGrid

          mDataSet = New DataSet("Employers Listing Example")

 

          'транзакция, в контексте которой заполняем DataSet

          Dim myTrans As OleDbTransaction

 

         mConnection.Open()                        'открываем подключение

          myTrans = mConnection.BeginTransaction()  'стартуем транзакцию

         'определяем транзакцию для команды на выборку

          mSelectCmd.Transaction = myTrans         

     

         'Заполняем DataSet через DataAdapter

    mDataAdapter.Fill(mDataSet, "Employers")

           

          myTrans.Commit()    'завершаем транзакцию

          mConnection.Close() 'закрываем подключение

      

       'обрабатываем OLE DB исключения, формируем коллекцию ошибок (IErrorRecords)

 Catch myException As OleDbException

             Dim str As String, i As Integer

       For i = 0 To myException.Errors.Count - 1

                 str = str + "Message " & i.ToString + 1 & ": " +                      

                 myException.Errors(i).Message + Chr(13) + _

                "Native: " + myException.Errors(i).NativeError.ToString() + _

                Chr(13) + "Source: " + myException.Errors(i).Source + Chr(13) + _

                "SQL: " + myException.Errors(i).SQLState + Chr(13) + _

                 "----------------------------------------" + Chr(13)

       Next i

             MsgBox(str)

 'обрабатываем остальные исключения

 Catch e As Exception

             MsgBox(e.Message)

 End Try

 

    End Function

 

 

     Определим событие New() для нашей формы и после инициализации компонент

(метод InitializeComponent()) создаем экземпляр нашего класса:

 

  'Add any initialization after the InitializeComponent() call

   TDataSetObj = New VisualComponents.TDataSetObject()

 

     Осталось только задать источник данных для нашего DataGrid компонента:

 

       TDataSetObj.FillDataSet()

   mDataGrid.DataSource = TDataSetObj.mDataSet.Tables("Employers")

 

     В итоге мы получили приложение для обзора таблиц базы данных и сортировки этих таблиц  по колонкам (данная функция не требует программной реализации т.к. является встроенной для компонента DataGrid)

     Результат работы:

 

         

 

Загрузить архив с примером, Класс TDataSetObject.vb