在我的Web服务中,我连接到Sybase数据库。大量打开数据库连接导致应用程序崩溃
我有医生的名单和每个医生可以与医院的数量有关。我需要更新医生正在工作的每个医院的一些细节。
对于每一个医生数据库的新连接是opened.For每个医生在列表中,我第一次得到在DbReader医院的名单,我在做阅读器上的每个医院的操作。一旦处理了DbReader中的所有记录,就关闭阅读器和连接。 (这是因为我通过System.Data.CommandBehavior.CloseConnection
到Sybase.Data.AseClient.AseCommand
类的ExecuteReader()
方法)
现在,如果医生的数量超出某个上限,我得到的错误,因为这是打开的连接的数量变得非常大。
我可以在这种情况下使用哪些不同的方法来摆脱错误的?如何知道客户端打开连接的数量?
其中一个事情我能做的就是 - 直到前一个连接关闭不打开一个新的连接。但是这种方法并不好(我认为),因为虽然允许多个连接,但我一次只能有一个连接。
你应该表现出你的代码,你在哪里循环对所有的医生和您如何使用您的ExecuteReader的地方。 – 2011-03-09 11:26:21
@David Piras:代码非常大,分布在多个方法中。我有一个方法返回包含医院列表/记录的Reader对象。我从其他方法调用此方法。当我得到Reader对象并且它有记录时,我处理每条记录,并在'finally'块中关闭阅读器(这反过来关闭连接)。 – Learner 2011-03-09 11:33:47