2015-04-26 56 views
0

我想從數據讀取器接收兩個值。但我不知道如何將這個問題放入一個查詢中。我怎樣才能通過使用一個sqldatareader來接收它?組合查詢並使用1個數據讀取器

string query = "select date from ars.kmstand where ritnr=(select max(ritnr) from ars.kmstand)"; 
     string query2 = "select nr from ars.kmstand where ritnr=(select max(ritnr) from ars.kmstand)"; 
     SqlCommand com = new SqlCommand(query2, conn); 
     SqlDataReader rt = com.ExecuteReader(); 
     while (rt.Read()) 
     { 
      ritnr = rt.GetInt32(0); 
     } 
     rt.Close(); 
     SqlCommand comm = new SqlCommand(query, conn); 
     SqlDataReader rd = comm.ExecuteReader(); 
     while (rd.Read()) 
     { 
      value = rd.GetSqlDateTime(0); 
     } 

回答

2

結合查詢並將列索引傳遞給IDataReader的GetXXX方法從結果集中獲取每列的值。

string query = "select nhr, date from ars.kmstand where ritnr=(select max(ritnr) from ars.kmstand)"; 
SqlCommand com = new SqlCommand(query, conn); 
SqlDataReader rt = com.ExecuteReader(); 
while (rt.Read()) { 
    int nhr = rt.GetInt32(0); 
    SqlDateTime date = rt.GetSqlDateTime(1); 
} 
rt.Close(); 
+0

謝謝,更短,更好。真的有幫助! – tosorro

0

方法NextResultDbDataReader及其派生類型(包括SqldataReader)將移動從一個數據組到下一個。

因此:

// ... 
var rdr = cmd.ExecuteReader(); 
while (rdr.Read()) { 
    // Read rows from the first dataset 
} 

if (rdr.NextResult()) { 
    // There is a second dataset 
    while (rdr.Read()) { 
    // ... 
    } 
} 

在命令中,只是有多個操作,每個返回行(這可能是你執行一個存儲過程中)。

+0

很高興認識謝謝。 – tosorro