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