2013-12-09 112 views
0

当我从数据阅读器向数据表加载数据时,它会跳过第一行。 例如,如果我在数据阅读器中有12行,那么只有11行即将到来。将数据从数据阅读器加载到数据表时出现问题

dataReader dr=new DataReader(); 
DataTable dt=new DataTable(); 
if(dr.read)  
dt.load(dr); 

请帮助 Thanx提前!

回答

2

DataReader.Read使读者进入下一行。

您不需要此检查,否则请改为使用HasRows

dt.load(dr); 

注意,你也可以使用一个DataAdapter加载DataTable

DataTable dt = new DataTable(); 
using(var con = new SqlConnection("ConnectionString")) 
using(var da = new SqlDataAdapter("SELECT * FROM T", con)) 
{ 
    da.Fill(dt); 
} 
+0

它的工作原理 Thanku这么多添添 – James

+0

,它的工作原理,但我觉得比如果医生没有数据,它会给出错误 – James

+0

@Ankit:没有,如果没有行,你得到一个空'DataTable'与所有列(测试)。从[MSDN](http://msdn.microsoft.com/zh-cn/library/4e06d41f(v = vs.110).aspx):_“架构操作发生在所有导入的结果集上,即使那些不包含数据。”_ –

1

望着文档,Load方法传递一个DataReader没有一张支票:

if (dr.Read()) 

所以我会说,如果你删除了这一行,那么你将得到你所有的结果。 Read()将推动读者一个记录。

相关问题