- PR -

データベースのユーザーセッションについて

1
投稿者投稿内容
hayuma
会議室デビュー日: 2003/07/07
投稿数: 7
投稿日時: 2003-07-31 10:05
いつもお世話になっております。
現在ASP.NET(VB.NET)とオラクルを使って開発をしているのですが、何回かデバッグをしているとユーザーの制限を越えたという意味合いのエラーが出てしまい、きちんとデータベースをクローズしていないのかと思ったのですが、きちんとしてありました。

そこでOleDBDataBaseConnectionを使用してボタンを押すとオープンしてもう一回押すとクローズするだけというサンプルを作ってみたのですが、Openでは接続ユーザーは増えるのですがCloseメソッドの時にユーザーが減りません。
きちんと切断するためにはCloseメソッドでは駄目なのでしょうか?
ちなみにユーザー数の監視にはSELECT * FROM V$LICENSEを使っています。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-05 08:37
こんにちは。

 私の方はCPU数のライセンスなのですが。。。

 OleDbConnection.Openだけが接続数…リソースと言い直します、を増やすものではありません。OleDbCommandやOleDbDataAdapterも、リソースを消費します。これらはCloseメソッドはありませんが、Disposeメソッドがあります。Disposeメソッドがあるものは、必ず必要がなくなった時点でDisposeしてください。これは、アンマネージなリソースを解放する処理で、C言語などでmallocした後にfreeするのと同様に必要な処理です。ただし、Closeメソッドがある場合はCloseメソッドを使用します(処理が等価になるように実装されている/実装しなければならない)。

 私の方では、OleDbCommandをforループの中で大量に作りっぱなしにしたため、オープンできるカーソル数の上限に達してしまいました。

 DisposeメソッドがあるクラスはDisposeするようにすると、大丈夫だと思うのですが…?
1

スキルアップ/キャリアアップ(JOB@IT)