2009-06-16 22 views
0

我有一个类通过SELECT存储过程从数据库获取数据的方法。该方法通过在SqlCommand上返回ExecuteReader()使用SqlDbReader通过2个DB绑定方法使用一个sqlconnection/sqlcommand

连接和一切都在此方法中进行,并将字段(如连接字符串)设置为类级别字段。

我现在需要根据这个查询的结果填充一个数组(因此每行的列将进入带有自己索引的数组)。

但是,此查询不会选择所涉及的一个表中的所有数据。我可以编写查询来获得我需要的内容,但是如何在整个班级中使用一个连接?如果我实例化连接对象并在构造函数中调用Open(),那么在运行时会出现异常。

我希望这样的事情:

// At class level: 
sqlconn.Open(); 
// sqlcommand set up 


Method() 
{ 
// Fire stored proc 
// Insert results in a collection 
} 

Method2() 
{ 
// Pass same collection in (use same one), 
// Add new row columns into same collection 
} 

我怎样才能做到这一点在考虑严格的性能?

回答

0

的一种方法是围绕通过你的连接对象:

// At class level: sqlConn.Open(); // sqlcommand set up 

Method(sqlConn) { // Fire stored proc // Insert results in a collection } 

Method2(sqlConn); 
sqlConn.Close(); 

的基本前提是尽可能晚,你可以打开,并尽早关闭。你甚至可以编写另一种方法来打开连接,调用所有将使用它的方法,然后关闭它。

+0

很酷。我会放弃这一点。你描述的方法基本上做的只是调用存储过程的方法,对吗?由于API的技术原因,我不能使用参数,因此我将无法指定要触发/不触发的方法。 – dotnetdev 2009-06-16 22:49:27

相关问题