Реклама:

Чтобы команда данных в результате выполнения возвратила поток записей, она должна выполняться методом ExecuteReader без параметра или с параметрами

CloseConnection, ^у!п^ или SingleResult.

Алгоритм вызова команды данных на выполнение и ассоциирование ридера с результатом выполнения команды приводится в целом по алгоритму, рассмотренному в 5.2.2. Однако интерпретация результата (в частности, представление его пользователю) может иметь характерные для конкретного случая особенности.

Различие в интерпретации записей из потока можно проследить, сопоставив два приводимых ниже примера. В первом результат выполнения команды - поток записей - помещается в элемент управления ListBox, во втором - в элемент управления ListView.

Пример. Поместим поток записей в список Items элемента управления ListBox. Команда данных читает записи из таблицы Kaf базы данных VUZ.mdb (Access).

//---соединение

OleDbConnection cn = new OleDbConnection(

"Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";" + "User ID=Admin;Data Source=D:\\VUZ\\VUZ.mdb;" + "Mode=Share Deny None;Extended Properties=\"\";" +

"Jet OLEDB:System database=\"\";" +

"Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";" +

"Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;" + "Jet OLEDB:Global Partial Bulk Ops=2;" + "Jet OLEDB:Global Bulk Transactions=1;" +

"Jet OLEDB:New Database Password=\"\";" + "

"Jet OLEDB:Create System Database=False;"+ "Jet OLEDB:Encrypt Database=False;" + "Jet OLEDB:Don't Copy Locale on Compact=False;" +

"Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"

);

//---команда

OleDbCommand cmd = new OleDbCommand( "SELECT KK, Nazv, Fakultet, Sostav FROM Kaf", cn);

//---ридер

OleDbDataReader r; try

{

//---открываем соединение

cn.Open();

//---выполняем команду

r = cmd.ExecuteReader(); listBox1.Items.Clear();

//---строки из ридера пишем в listBox

while (r.Read())

{

listBox1.Items.Add(r["KK"].ToString() + (char)9 +

r.GetString(l) + (char)9 + r.GetString(2) + (char)9 + r.GetInt32(3));

}

//---закрываем ридер

r.Close();

}

catch (Exception xpt)

{

MessageBox.Show("Ошибка : " + xpt.Message);

}

finally

{

//---закрываем соединение

cn.Close();

}

Результат выполнения приведенного выше кода показан на рис. 5.10

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 5.10

Пример. Поместим поток записей в список элемента управления ListView. Для этого поместим в форму пустой объект этого типа с именем listView1, не содержащий ни столбцов, ни строк. Команда данных читает записи из таблицы Kaf базы данных VUZ (SQL Server).

//---создадим в listViewl 4 столбца

listView1.Columns.Add("KK", 40, HorizontalAlignment.Left); listView1.Columns.Add("Nazv", 150, HorizontalAlignment.Left); listView1.Columns.Add("Fakultet", 150, HorizontalAlignment.Left); listView1.Columns.Add("Sostav", 75, HorizontalAlignment.Left);


⇐ Предыдущая страница| |Следующая страница ⇒