好的,我想提取DataRow
一个DataReader
。我已经环顾了很长时间,但似乎没有一种简单的方法可以做到这一点。
我知道aDataReader
是更多的行集合,但当时只读取一行。
所以我的问题是:有没有办法DataRow
从当前行中提取出来DataReader
?
有什么方法可以从DataReader的当前行中提取DataRow吗?
不,至少没有简单的方法。每个DataRow都属于一个表。您不能将该属性留空,甚至不能更改表(不使用ImportRow)。
但是,如果您需要DataRows,为什么不首先填写a DataTable
?
DataTable table = new DataTable();
using(var con = new SqlConnection("...."))
using(var da = new SqlDataAdapter("SELECT ... WHERE...", con))
da.Fill(table);
// now you have the row(s)
如果您确实需要从中获取行,则DataReader
可以使用reader.GetSchemaTable
来获取有关列的所有信息:
if (reader.HasRows)
{
DataTable schemaTable = reader.GetSchemaTable();
DataTable data = new DataTable();
foreach (DataRow row in schemaTable.Rows)
{
string colName = row.Field<string>("ColumnName");
Type t = row.Field<Type>("DataType");
data.Columns.Add(colName, t);
}
while (reader.Read())
{
var newRow = data.Rows.Add();
foreach (DataColumn col in data.Columns)
{
newRow[col.ColumnName] = reader[col.ColumnName];
}
}
}
但这并不是真正有效的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句