
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLについて
-
自己相関サブクエリと自己結合...
-
.SQLファイルをvbaで実行
-
Microsoft SQL Serverについて
-
Wacom Cintiq 16 と Wacom Cint...
-
SQLをはじめから勉強するには
-
SQL クエリ データ数
-
SQL Server management studio ...
-
Tverは無料でしょうか?
-
サーバー破壊
-
Visuaal Studio Community 2022...
-
Access2021 「ISNULL関数には引...
-
甘いものがすきなのってなおせ...
-
SQLて何ですか!
-
生え際から顎先まで17.5 頭頂か...
-
sql serveについて
-
SQLを駆使したデータ抽出ってど...
-
DBのテーブルの設計ができず困...
-
T-SQLを無料で勉強したいです。...
-
AccessのInsertクエリのあとつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLserver算術オーバーフロ...
-
bcp in でエラー
-
DBへのOPENについて
-
ACCESSのVBAでCSVを取込処理に...
-
VB.net SqlConnectionでの連続S...
-
Accessのマクロでモジュールを...
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
sqlplusでヘッダーが付かない
-
キャッシュを使わずにSELECTを...
-
callで順に実行されるプロシー...
-
ODBCリンクの際にACCESSでは読...
-
sqlplusのspoolで空白行出現
-
重複するIDのデータを1行にま...
-
Accessの数値から時間に変換す...
-
SQL文のエラー
-
PL/SQLでSPOOLさせたいのですが...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
【Excel VBA】 WorksheetやRa...
-
ストアドプロシジャからストア...
おすすめ情報