DataTableReader
Данный класс позволяет использовать объект DataTable в режиме однонаправленного ForwardOnly чтения. Он, так же как и OleDbDataReader, наследуется от базового класса DBDataReader. Этот способ чтения таблиц DataSet может быть полезен, когда используются общие методы для отсоединенного источника данных и данных, которые формируются методом OleDbCommand.ExecuteReader() в подсоединенном режиме. Следующий пример демонстрирует использование общего метода PrintDBDataReader() для подсоединенного и отсоединенного режимов работы:
public void GetDBReaderFromDataTable() { DataSet ds = new DataSet(); DataTable tbl = ds.Tables.Add("EMPLOYEE");
//загрузка данных в dataSet OleDbConnection con = ConnectionProvider.CreateConnection(); con.Open(); OleDbTransaction trans = con.BeginTransaction();
ds.Load(new OleDbCommand( "select * from EMPLOYEE",con,trans).ExecuteReader(), LoadOption.OverwriteChanges, tbl);
//используем DataTable в режиме однонаправленного чтения
this.PrintDBDataReader(new DataTableReader(tbl));
//OleDbDataReader и подсоединенный режим
this.PrintDBDataReader( new OleDbCommand("select * from EMPLOYEE", con, trans).ExecuteReader());
trans.Commit(); con.Close(); }
/// <summary>
/// Выводит в консоль данные из DBDataReader
/// </summary>
/// <param name="reader"></param>
public void PrintDBDataReader(System.Data.Common.DbDataReader reader) { while (reader.Read()) { Console.WriteLine("*********************************"); for (int i = 0; i < reader.FieldCount; i++) Console.WriteLine(reader.GetName(i) + "=" + reader[i].ToString()); }
reader.Close(); }