2013-12-09 65 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()將推動讀者一個記錄。

相關問題