Реклама:

//---ридер

SqlDataReader r; //---соединение

SqlConnection cn = new SqlConnection(

"data source=PAVLIK-5 0R6ZD;initial catalog=VUZ;" + "integrated security=SSPI;" + "persist security info=False;" +

"workstation id=PAVLIK-5 0R6ZD;packet size=4096"); //---команда

SqlCommand cmd = new SqlCommand(

"SELECT KK, Nazv, Fakultet, Sostav FROM Kaf", cn);

try

{

//---открываем соединение и выполняем команду

cn.Open();

r = cmd.ExecuteReader();

//---чтение из ридера

while (r.Read())

{

//---столбцы строки ридера считываются в массив объектов

object[] mas = new object[r.FieldCount];

r.GetValues(mas);

//---создание нового элемента списка ListView

//---со значением 1-го столбца строки ридера

ListViewItem element =

new ListViewItem(((object)mas[0]).ToString());

//---заполнение оставшихся столбцов

//---элемента списка ListView

//---значениями прочих столбцов строки ридера for(int i = 1; i < r.FieldCount; {

element.SubItems.Add(((object)mas[i]).ToString());

}

//---добавление элемента в список ListView listView1.Items.Add(element);

}

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

r.Close();

}

catch (Exception expt)

{

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

}

finally

{

//---закрываем соединение cn.Close();

}

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

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

рис. 5.11

5.2.6. Чтение схемы данных

Схему данных можно получить, если команда данных выполняется методом ExecuteReader с параметром SchemaOnly или KeyInfo. В первом случае ридер считывает только схему, во втором - и схему и данные.

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

public DataTable GetSchemaTable();

Метод возвращает ссылку на таблицу данных, в которой:

• столбцами служат параметры столбцов схемы;

• каждому столбцу схемы соответствует одна строка таблицы.

Извлеченную схему удобно представлять пользователю при помощи элемента управления DataGrid, поскольку его легко связать с таблицей данных (объект

DataTable).

Пример. Считаем схему данных как результат выполнения запроса на считывание данных из таблицы Kaf базы данных VUZ (SQL Server). Извлечем схему и поместим ее в объект dataGrid1.

//---ридер

SqlDataReader r; //---соединение

SqlConnection cn = new SqlConnection(

"data source=PAVLIK-5 0R6ZD;initial catalog=VUZ;" + "integrated security=SSPI;" + "persist security info=False;" +

"workstation id= PAVLIK -5 0R6ZD;packet size=4096"); //---команда

SqlCommand cmd = new SqlCommand(

"SELECT KK, Nazv, Fakultet, Sostav FROM Kaf", cn);

try {

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

cn.Open();

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

r = cmd.ExecuteReader(CommandBehavior.SchemaOnly);

//---извлечем схему и свяжем ее с гридом

dataGrid1.SetDataBinding(r.GetSchemaTable(), "");

//---закроем ридер r.Close();

catch (Exception exptn)

MessageBox.Show("OiiDi6Ka : " + exptn.Message);

finally

//---закроем соединение cn.Close();

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

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

рис. 5.12

5.2.7. XmlTextReader: чтение из потока XML-данных


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