2009-08-05 59 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

相关问题