- - PR -
SqlClient.SqlConnectionの完全なクローズ
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-04 22:53
はじめまして。初心者です。
SqlClientを使用して、PC側のSQL Server 2000のデータベース に接続しています。 下記のように単純にデータベースをオープンし、クローズしている だけなのですが、何度も繰り返しているうちに時間がかかるように なり、果てはフリーズしたようにかたまってしまいます。 クローズは、「sqlConn.Close」だけでは駄目なのでしょうか? ----------------------------------------------------------------- Public sqlConn As SqlClient.SqlConnection Public sqlCmd As SqlClient.SqlCommand 'オープン時 sqlConn = New SqlClient.SqlConnection("Data Source=....") sqlCmd = New SqlClient.SqlCommand sqlConn.Open() 'クローズ時 sqlConn.Close() ----------------------------------------------------------------- <環境> XP Pro SP1 Microsoft Visual Basic .NET 2003 ターゲットはスマートアプリケーション(CE .NET) 使用しているエミュレータは、バージョン4.1.0 エミュレータ上のメモリは、 データ記憶用 有効領域 2496KB プログラム実行用有効領域 6736KB となっています。 デバイスがない為、エミュレータのみです。 実際に、デバイスへインストールしても同様の現象がでてしまう のか不安です。よろしくお願いします。 情報が不足していましたらすいません。 | ||||
|
投稿日時: 2005-02-04 22:58
sqlConn.Dispose
というかusingしましょう。 | ||||
|
投稿日時: 2005-02-04 23:05
sqlConn.Dispose
というかusingしましょう。 中 博俊さん 早速、ありがとうございます。 VBを使っているのですが、 sqlConn.Dispose とすると下記のメッセージがでます。 「usingしましょう」もよくわからないのです。すいません。 'System.ComponentModel.Component.Protected Overridable Sub Dispose(disposing As Boolean)' は 'Protected' であるため、このコンテキストではアクセスできません。 | ||||
|
投稿日時: 2005-02-04 23:46
こんにちは。おふぃすこまです。
とりあえず アンマネージ リソースをクリーンアップするための Finalize および Dispose の実装 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/cpconfinalizedispose.asp を見てみては如何でしょう? 最初は難しく感じるかもしれませんが、何事も調べる事が肝心と言う事で・・・ ↑自分にも言い聞かしてみる(^^; | ||||
|
投稿日時: 2005-02-04 23:53
おふぃすこま さん
ありがとうございます。おっしゃる通りです(^^; こちらを参考に頑張って調べてみます。 | ||||
|
投稿日時: 2005-02-05 02:15
VB.NETはusingがありませんからね。 下記のコードで代替。 try 'オープン時 sqlConn = New SqlClient.SqlConnection("Data Source=....") sqlCmd = New SqlClient.SqlCommand sqlConn.Open() catch ex as exception '..... finally sqlConn.Close() end try | ||||
|
投稿日時: 2005-02-05 05:00
NAL-6295さん、ありがとうございました。
返信が遅れてすいませんでした。 今まで、おふぃすこまさんに教わったURLで勉強してましたが、 おふぃすこまさんのおっしゃる通り難しくて・・ 基礎から勉強しなおしますです(^^ NAL-6295さんの代替コード早速試してみます。 みなさん、ありがとうございました。 | ||||
|
投稿日時: 2005-02-05 14:31
VBでしたか失礼失礼
先のソースじゃダメです。こんな感じでどうぞ。 Dim sqlConn As SqlConnection Dim sqlCmd As SqlCommand Try sqlConn = New SqlClient.SqlConnection("Data Source=....") Try sqlCmd = New SqlClient.SqlCommand Catch ex As Exception If (IsNothing(sqlCmd) = False) Then sqlCmd.Dispose() End If End Try Catch ex As Exception '..... Finally If (IsNothing(sqlConn) = False) Then sqlConn.Close() sqlConn.Dispose() End If End Try |
1