我想知道使用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();
可以吗?用这样的方式? 有人知道更好的方法,请指教我〜
谢谢!
答案 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)
我建议你学习或使用SQLHelper
http://www.sharpdeveloper.net/source/SqlHelper-Source-Code-cs.html