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.1
- 回答日時:
無限ループする前にオープンして、無限ループを抜けた後にクローズしてください。
何で無限ループの中でオープン、クローズ処理を行おうとしているのかが理解できません。
なお、catchの中でコネクションをクローズする際には、コネクションが生成されているかどうか判定した上で、コネクションが生きている場合だけクローズするようにしましょう。
この回答への補足
回答ありがとうございます。
処理に障害が発生しても処理が止まる事がないようにしたいのです。
なのでオープン処理をループ内にいれて、なにかあってもまたオープンする処理を入れたかったのですが。
No.2
- 回答日時:
単純に考えて、「Openフラグ立ておいて判定」は不可?
No.3
- 回答日時:
>処理に障害が発生しても処理が止まる事がないようにしたいのです。
SQLエラーが発生したからって、勝手にコネクション切れたりしませんが・・・
try~catchの中でSQL発行して、エラーが起きたら、catchの中で適切なエラー処理を行って、呼び出し元へきちんと処理を返せば良いだけですよね。
なので、エラーが起きても続行する事と、コネクションを操作する事に関連性はありませんよね。
まぁ、貴方のやり方で言うなら、cnをグローバルに取るなり、その関数の呼び元で生成して引数で渡して来るなりして、オブジェクト自体は呼び元で生成。
こちらの関数内では、openとcloseだけを行う。
オブジェクトの破棄は、再度呼び出し元で。
とでもやれば、貴方の思っているようなのが出来るのでは?
お探しの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ランキング
-
SQL Date型の列から年月だけを...
-
SQLサーバー接続 特定のPCがWin...
-
SQLのエラー(~付近に不適切な...
-
Accessの重複なしのカウントの...
-
BULK INSERT時のNull許容について
-
sqlserverで集計結果をUPDATEし...
-
【VB.NET】日付型の列にNULLを...
-
<SQL>重複しているデータの場合...
-
ACCESS2007 フォーム 「バリア...
-
sqlで、600行あるテーブルを100...
-
集計処理について
-
Visuaal Studio Community 2022...
-
AccessのInsertクエリのあとつ...
-
SQLで、行ごとのとある要素を比...
-
SQL SERVER windows 認証エラー...
-
【SQLサーバ】float型における...
-
SQLの副問い合わせ IN演算子とE...
-
自己相関サブクエリと自己結合...
-
ACCESSで複数テーブルを結合し...
-
SQLSERVERのデータファイル圧縮...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLserver算術オーバーフロ...
-
bcp in でエラー
-
ACCESSのVBAでCSVを取込処理に...
-
VB.net SqlConnectionでの連続S...
-
ストアドプロシージャのRETURN...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
Accessの数値から時間に変換す...
-
ストアドプロシジャからストア...
-
VBA プロシージャの名前の取得
-
Statement ignored というエラー
-
sqlplusでヘッダーが付かない
-
全角空白のTRIMができない...
-
PL/SQLカーソルの2重FORループ...
-
キャッシュを使わずにSELECTを...
-
今日の日付が入った行のデータ...
-
ODBCリンクの際にACCESSでは読...
-
エクセル 日付による並べ替え...
-
【Excel VBA】 WorksheetやRa...
おすすめ情報