2009-08-05 57 views
0

只是一個簡單的問題,因爲我發現的大多數博客和教程都是關於MySQL和C#的基本元素。什麼是處理來自MySQL和C#的返回數據的好方法?

我正在使用MySQL ADO連接器。

我有一切設置,我可以從表中檢索數據。但我想創建一個方法來簡化我的工作。所以我可以設置一個查詢字符串(在方法或對象中)並調用一個函數,它會返回某種數據對象。

// For each row 
while(reader.Read()) 
{ 
    // For each column 
    for(int i = 0; i < reader.FieldCount; i++) 
    { 
     Console.Write(reader.GetName(i).ToString()); 
     Console.Write(reader.GetValue(i).ToString() + ","); 
    } 
    Console.Write("\n"); 
} 

這就是我現在擁有的。我可能只是返回讀者。但是,每次我想要循環訪問某些數據時,都需要在while循環中使用for循環。

想知道是否有更好的數據對象可以填寫並返回?我也喜歡閱讀材料的鏈接。

順便說一句我正在學習C#,所以可能有些事情我沒有100%清楚。

回答

1

您不應該傳遞數據讀取器。只要從數據讀取器讀取數據庫連接,就必須保持數據庫連接處於打開狀態,因此應該將所需的數據讀入某些集合,以便儘可能早地關閉數據庫連接。

您可以將數據讀入DataSetDataTable,或者您可以爲對象創建類並直接填充。例如:

List<SomeCustomObject> data = new List<SomeCustomObject>(); 
while(reader.Read()) { 
    int id = reader.GetInt32(0); 
    string name = reader.GetString(1); 
    data.Add(new SomeCustomObject(id, name); 
} 
+0

很好的答案:)你可以鏈接到或顯示數據集版本的例子。因爲我不熟悉它。 – 2009-08-05 21:45:16

+0

最簡單的是創建一個DataTable對象並使用Load方法從數據讀取器中讀取數據。 – Guffa 2009-08-05 22:00:24

+0

謝謝。它完美的作品。 :) – 2009-08-05 22:24:42

2

爲什麼不只是使用ADO.NET provider for MySql,並返回標準ADO.NET DataSet

這樣做的好處是可以讓您的代碼處理可移植到其他數據庫後端的數據。

+0

我正在使用它,你可能會詳細說明嗎? – 2009-08-05 21:20:34

+0

我發現這個論壇帖子關於DataSet和DataAdapter:http://forums.mysql.com/read.php?38,50575,50575 – 2009-08-05 21:25:27

+0

該帖子顯示的過程。看看「myDA.Fill(myDS,」dsUno「);」 - 它從命令的結果中填充ADO.NET數據集。然後您可以使用它,因爲它具有處理數據所需的所有信息,並且可以關閉閱讀器。 – 2009-08-05 23:08:48

相關問題