из OleDbCommand получить DataTable

Smirnov Anton
Дата: 06.12.2005 15:47:32
хочу выполнить через OleDbCommand хранимую процедуру и получить из неё набор данных, но не могу понять(найти в справке) как это проделать.
получается через OleDBDataAdapter, но хочется через OleDbCommand
автор
ExecuteReader
Executes commands that return rows. ...
а как эти rows получить бы не через
обход всех строк ридером и занесения их руками в DataTable, а попроще
такое вообще возможно?

спасибо.
KVS
Дата: 06.12.2005 15:54:43
Кажется невозможно.
Smirnov Anton
Дата: 06.12.2005 17:12:29
KVS
Кажется невозможно.

зацените тогда функцию для заполнения таблицы по ридеру
(типа почти универсальную)
принимаются предложения по быстродействию и по правильности по написанию(второе приложение на C# + ADO.NET :) )
		// function for fill DataTable from DataReader!!!PK mast be the fist columns!!!
		virtual protected DataTable GetTableFromReader(OleDbDataReader dr,int first_pk_amount)
		{
			if(dr==null) return null;
			//create table
			string[] Names = new String[dr.FieldCount];
			DataTable dt = new DataTable();
			for(int i=0;i<dr.FieldCount;i++)
			{
				dt.Columns.Add(dr.GetName(i),dr.GetType());
				Names[i] = dr.GetName(i);
			}
			//define primary keys
			if(first_pk_amount>0)
			{
				DataColumn[] keys = new DataColumn[first_pk_amount];
				for(int i=0;i<first_pk_amount;i++)
					keys[i] = dt.Columns[i];
			}
			//fill table
			DataRow drow;
			dt.BeginLoadData();
			while(dr.Read())
			{
				drow = dt.NewRow();
				drow.BeginEdit();
				for(int i=0;i<dr.FieldCount;i++)
				 drow[i] = dr.GetValue(i);
				drow.EndEdit();
				dt.Rows.Add(drow);
			}
			dt.EndLoadData();
			return dt;
		}
KVS
Дата: 06.12.2005 17:53:44
Столько кода :) Зацените использование датаадаптера:
OleDbCommand cmd = new OleDbCommand();
// Иницализация вашей команды
OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
Smirnov Anton
Дата: 06.12.2005 18:45:08
KVS
Столько кода :) Зацените использование датаадаптера:
OleDbCommand cmd = new OleDbCommand();
// Иницализация вашей команды
OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

во блин
я примерно про это и спрашивал в первом посте
Спасиба
Лиман Артём
Дата: 07.12.2005 17:08:28
Smirnov Anton
получается через OleDBDataAdapter, но хочется через OleDbCommand


Smirnov Anton

во блин
я примерно про это и спрашивал в первом посте
Спасиба


что то я не понял, тебе хочеца через OleDBDataAdapter или нет? ;)