4

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

假设我的数据库中有 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();

可以吗?像这样使用?有谁知道更好的方法,请指教~

谢谢!

4

3 回答 3

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。

于 2012-04-11T16:11:28.673 回答
2

(因为更合适的答案已被删除)

您可以保持连接打开,但作为一种良好做法,您应该尽快关闭命令和阅读器。

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

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

还有一点:

  • 不要使用SELECT *,拼出列
于 2012-04-11T17:43:16.433 回答
0

i suggest u to learn or use SQLHelper

http://www.sharpdeveloper.net/source/SqlHelper-Source-Code-cs.html

于 2012-04-12T01:39:44.740 回答