DBへのOPENについて
無限ループの処理の中でDBへ取得、更新をします。
無限ループの中で毎回Openするのはいけてないと思うので、例外などに入ったときのみCloseしてあとはOpenのままでいたいと思っています。
つまりCloseされていたらOpenするという処理をしたいのですがどうやったらいいのでしょうか。
↓無限ループしている箇所からの呼び出し
Public Sub AA ()
Dim cn As System.Data.SqlClient.SqlConnection
Dim ServerName As String = "AA"
Dim DBName As String = "BB"
try
cn = New System.Data.SqlClient.SqlConnection
If cn.State = Data.ConnectionState.Closed Then
cn.ConnectionString = "Data Source = " & ServerName & _
";Initial Catalog = " & DBName & _
";Integrated Security = SSPI"
cn.Open()
End if
Catch ex As Exception
cn.close()
End try
End Sub
こんな感じかなと思いましたが、これだと毎回Newしているのでなにかおかしい気がしてしまいます。
環境
SQL Server2008
ADO.net
VB.net
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>処理に障害が発生しても処理が止まる事がないようにしたいのです。
SQLエラーが発生したからって、勝手にコネクション切れたりしませんが・・・
try~catchの中でSQL発行して、エラーが起きたら、catchの中で適切なエラー処理を行って、呼び出し元へきちんと処理を返せば良いだけですよね。
なので、エラーが起きても続行する事と、コネクションを操作する事に関連性はありませんよね。
まぁ、貴方のやり方で言うなら、cnをグローバルに取るなり、その関数の呼び元で生成して引数で渡して来るなりして、オブジェクト自体は呼び元で生成。
こちらの関数内では、openとcloseだけを行う。
オブジェクトの破棄は、再度呼び出し元で。
とでもやれば、貴方の思っているようなのが出来るのでは?
No.2
- 回答日時:
単純に考えて、「Openフラグ立ておいて判定」は不可?
No.1
- 回答日時:
無限ループする前にオープンして、無限ループを抜けた後にクローズしてください。
何で無限ループの中でオープン、クローズ処理を行おうとしているのかが理解できません。
なお、catchの中でコネクションをクローズする際には、コネクションが生成されているかどうか判定した上で、コネクションが生きている場合だけクローズするようにしましょう。
この回答への補足
回答ありがとうございます。
処理に障害が発生しても処理が止まる事がないようにしたいのです。
なのでオープン処理をループ内にいれて、なにかあってもまたオープンする処理を入れたかったのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.net SqlConnectionでの連続S...
-
bcp in でエラー
-
SQLserver算術オーバーフロ...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
Accessのマクロでモジュールを...
-
callで順に実行されるプロシー...
-
likeとsubstrの使いわけについて
-
PL/SQLカーソルの2重FORループ...
-
Accessの数値から時間に変換す...
-
ODBCリンクの際にACCESSでは読...
-
access adoのトランザクション
-
SQLサーバで和暦から西暦に変換...
-
キャッシュを使わずにSELECTを...
-
特定の日付が第何週目にあるか...
-
テーブルの主キーをdate型...
-
エクセルVBA 今日の日付行...
-
ファイルメーカーでの文字列の...
-
SQL文のエラー
-
異なるスキーマのビューを元に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bcp in でエラー
-
SQLserver算術オーバーフロ...
-
VB.net SqlConnectionでの連続S...
-
ACCESSのVBAでCSVを取込処理に...
-
ストアドプロシージャのRETURN...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
今日の日付が入った行のデータ...
-
VBA プロシージャの名前の取得
-
キャッシュを使わずにSELECTを...
-
sqlplusでヘッダーが付かない
-
Accessの数値から時間に変換す...
-
ODBCリンクの際にACCESSでは読...
-
Statement ignored というエラー
-
SQLで部分的にGROUP BYしたいとき
-
PL/SQLカーソルの2重FORループ...
-
SQLサーバで和暦から西暦に変換...
-
likeとsubstrの使いわけについて
-
全角空白のTRIMができない...
おすすめ情報