ASP.NET,正确使用DataReader的方法

时间:2012-04-11 16:06:55

标签: c# asp.net sqldatareader datareader advantage-database-server

我想知道使用DataReader的正确方法。 (C#和Advantage数据库)

假设我的数据库中有Order,Item和Customer表。

我需要读取cs文件中每个表的数据。

所以我打开数据库连接并使用DataReader读取数据。

AdsConnection conn = new AdsConnection("~~~~");
AdsCommand cmd;
AdsDataReader reader;

conn.open();
cmd = conn.CreateCommand();
cmd.CommandText = "Select * from order";
reader = cmd.ExecuteReader();

现在我需要阅读另一张表。但我认为我需要关闭连接和阅读器并重新连接并重新定义它们。

所以,我定义了另一位读者。

conn.Close();
conn.Open();
AdsDataReader itemReader;
cmd.CommandText = " Select * from item";
itemReader = cmd.ExecuteReader();

.
.
reader.close();
itemReader.close();
conn.Close();

可以吗?用这样的方式? 有人知道更好的方法,请指教我〜

谢谢!

3 个答案:

答案 0 :(得分:4)

ADO.NET 2.0引入了一项名为MARS- Multiple Active Result Sets的功能。这允许您向数据库提交多个查询,并通过一次调用来检索它们。

以下是MSDN文章,其中包含使用MARS的代码示例:

http://msdn.microsoft.com/en-us/library/yf1a7f4f(v=vs.80).aspx

请注意,连接字符串将MultipleActiveResultSets属性设置为true。

答案 1 :(得分:2)

(删除更合适的答案)

您可以保持Connection处于打开状态,但是您应该尽快关闭Command和Reader。

最好的方法是将每个这些资源放在using() { }语句中。

如果将每个查询放在单独的方法中是可能的或有益的,那么为每个连接使用单独的连接。只要您的数据库支持连接池,性能就不会有任何损失。

还有一点:

  • 请勿使用SELECT *拼出列

答案 2 :(得分:0)