Реклама:

SqlDataReader r;

listBox1.Items.Add(r.GetValue(0).ToString() + (char)9 +

r.GetValue(1));

В том случае, когда тип столбца нам неизвестен, определить его помогут методы ридера GetDataTypeName и GetFieldType:

public string GetDataTypeName( int ColumnIndex ); public Type GetFieldType( int ColumnIndex );

Первый возвращает строковое название типа столбца, второй возвращает соответствующий объект Type.

Например, поместить в элемент управления ListBox наименование типа первого столбца ридера можно двумя способами:

SqlDataReader r;

listBox1.Items.Add(r.GetDataTypeName(0)); или

System.Type t = r.GetFieldType(0); listBox1.Items.Add(t.FullName);

Существует также группа методов, помещающая значения столбцов строки ридера в разного рода массивы.

Метод GetBytes считывает строку ридера как поток байтов в байтовый массив, GetChars - как поток символов в символьный массив. Наконец, два метода считывают значения столбцов строки ридера в массив объектов:

public int GetSqlValues( object[] values ); public int GetValues( object[] values );

Например, прочитаем строку ридера в массив объектов, после чего поместим значения столбцов в строку списка элемента управления ListBox:

SqlDataReader r;

object[] massiv = new object[r.FieldCount]; r.GetValues(massiv);

string stroka = "";

for (int i = 0; i < massiv.Length; i++) {

stroka = stroka + massiv[i].ToString() + (char)9;

}

listBox1.Items.Add(stroka);

Протестировать столбец ридера на наличие в нем пустого или пропущенного значения (эквивалент DBNull) можно методом IsDBNull:

public bool IsDBNull( int ColumnIndex );

Если в столбце DBNull, метод возвратит true. В противном случае возвращается

false .

5.2.4. Метод ExecuteReader команды данных

Чтобы использовать ридер для чтения потока данных, порождающая этот поток команда данных должны выполняться методом

public SqlDataReader ExecuteReader();

public SqlDataReader ExecuteReader( CommandBehavior behavior );

где параметр задает одно из следующих значений перечисления System.Da-ta.CommandBehavior:

Значение СІоБеСоппесІїіоп

Описание

После выполнения команды ассоциированное с ним соединение автоматически будет закрыто, но только после закрытия объекта ридера, считьшающего результат выполнения команды

Бе£аи11

По умолчанию то же, что вызов Ехеси1еЯеас1ег(). Запрос может возвращать множественный результирующий набор

КеуІпїГо

Возвращает данные и схему данных (которая отдельно может считы-ваться методом ОеІБспетаТаЬІе ридера)

БспетаОпІу

Возвращает только схему данных

Бедиеп1:іа1Ассезз

Используется для чтения двоичных данных больших размеров. Ридер загружает данные как поток байтов или символов. Для интерпретации потока затем используются специфические методы ридера Ое1Бу1еэ и(или) Ое1:Спагз

БіпдІеЯезиІІ

Если команда выполняет пакет операторов Тгашай-БСЗЬ, которые могут возвратить множественный запрос, возвращается только результат первого такого оператора. Результаты выполнения остальных операторов в составе пакета игнорируются

SingleRow Возвращается только первая строка результирующего набора данных

5.2.5. Особенности чтения потока записей


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