2014-11-23 206 views
0

我想查詢我的mySQL數據庫,並希望所有的行都以可訪問的方式返回。從MySQL獲取結果

rows[0]["column"] 
rows[1]["column"]. 

我的代碼是目前:

MySqlCommand cmd = new MySqlCommand(query, conn); 

var dt = new DataTable(); 
dt.Load(cmd.ExecuteReader()); 

var rows = dt.AsEnumerable().ToArray(); 

所以我可以使用行[0] [ 「列」]但行[1]是遙不可及,彷彿dt.Load不是招」 t掃描所有行並將它們添加到列表中。

+0

的DataTable行集合已經是一個數組,爲什麼還需要這個額外水平和AsEnumerable添加的工作? (順便說一下,__out_tag_意味着_index超出範圍_?如果是這樣,dt.Load命令之後dt.Rows.Count的值是多少? – Steve 2014-11-23 14:50:02

+0

它只返回1行,但是直接運行相同的查詢MySQL和它返回16行我不知道爲什麼「AsEnumerable」 - 它提供給我的另一段代碼,我要求幫助,我只需要從MySQL數組中的所有結果 – 2014-11-23 15:24:59

+0

這似乎很奇怪。 – Steve 2014-11-23 15:32:14

回答

0

我給你一些僞代碼,我沒有嘗試編譯它,但應該給你這個想法,一般不要使用像「1」這樣的靜態索引來訪問表中的第二行,最好有一個循環或者一些其他類型的動態方法,無論您的查詢返回多少條記錄,它總是可以工作。

看看這個,省略了異常處理的緊湊

using(var conn = new MySqlConnection(connectionString)) 
using(var cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 
    cmd.ComamndText = query; 

    var adp = new MySqlDataAdapter(cmd); 

    var dt = new DataTable(); 
    adp.Fill(dt); 

    // here you can use the table's rows array to retrieve results 
    // for example 

    foreach (var row in dt.Rows) 
    { 
     //Do what you want now with this row 
    } 
}