Введение в ADO.NET. Часть вторая.Автор: Дроздовский Михаил Объект DataReader. Чтение данных. Объект SqlDataReader фактически представляет из себя реализацию серверного курсора, способного читать записи, возвращенные запросом, передвигаясь по ним последовательно сверху вниз. При работе с DataReader'ом нужно помнить: 1) что у одного открытого соединения в один момент может быть только один открытый DataReader; 2) что по окончании работы с DataReader его нужно закрыть, иначе не будет закрыто соединение; 3) что DataReader не имеет произвольного доступа к возвращенным записям и может передвигаться по ним только сверху вниз (что мы обговорили выше). Объект DataReader имеет метод Read для передвижения по записям. В общем виде работа с DataReader'ом выглядит так: ... SqlCommand xc = new SqlCommand("SELECT * FROM testt", XConn) SqlDataReader dr = xc.ExecuteReader() while (dr.Read()) { ... Console.WriteLine(dr["rowname"].ToString()) ... } dr.Close ... Пояснять код, я думаю, не следует :) Объекты DataAdapter и DataSet. Отсоединенный режим. Основные объекты, с которыми придется иметь дело при работе в отсоединенном режиме - это SqlDataAdapter и DataSet. Рассмотрим их подробнее. Объект типа SqlDataAdapter используется для двух целей - это выборка данных из базы данных с последующим наполнением DataSet'а и это передача изменений в базу данных. Конструктор объекта типа SqlDataAdapter имеет следующий вид: SqlDataAdapter da = new SqlDataAdapter("SQL QUERY", xcc) где xcc - это объект типа SqlConnection. Для заполнения DataSet'а с помощью SqlDataAdapter используется метод Fill: DataSet ds = new DataSet() da.Fill(ds, "table_name") Внимание! Microsoft настоятельно рекомендует использовать один DataAdapter для выборки из одной таблицы. Почему - не известно. Просто рекомендуют, и все :) ---- Следующий объект, с которым нам предстоит познакомиться - это DataSet. DataSet, по сути, представляет из себя локальный кэш данных, представленный в довольно логичной структуре. Кроме того, DataSet изначально рассчитан на работу с XML - его содержимое можно сохранять и загружать в виде XML-документов. DataSet имеет следующую структуру: DataSet -> Таблицы -> Строки DataSet->Tables[]->Rows[] Пример: DataSet ds = new DataSet() da.Fill(ds, "sometable") Console.WriteLine(ds.Tables["sometable"].Rows[0]["somecolumnname"]) --- В следующей части: хранимые процедуры и параметризованные запросы.
|