- PR -

VB:ADODB.ConnectionObject.Stateの値が変動しない

1
投稿者投稿内容
kshr
常連さん
会議室デビュー日: 2004/04/20
投稿数: 28
お住まい・勤務地: 滋賀
投稿日時: 2004-06-25 18:21
いつも拝見させていただいています。
お助けください。

1.Oracle9iへ[cn](ADODB.Connection)で接続しております。
2.ネットワークの切断や、Oracle9iが動作しなくなった場合の為に

各処理を行う前にチェック関数を実行させようとしていたのですが・・・
【Test】
処理を行う前にネットワークケーブルを抜き接続チェックモジュールをテストした結果
接続しているというStateしか返ってきません。

解決方法など、知っておられませんでしょうか。
よろしくお願いいたします。

下記 接続チェックモジュール

Public Function cn_Check() As Boolean
' cnチェック
If cn.State <> adStateConnecting Then
 ' 再接続/結果
 Select Case Oracle_Open
 Case True '成功
  cn_Check = True
 Case False '接続不可
  MsgBox "データベースへの接続リンクが切れました。" & vbCrLf & _
     "再接続を試みましたが接続できません。" & vbCrLf & vbCrLf & _
     "ネットワークの確認、サーバーが動作しているかを確認してください。" _
     , vbCritical + vbOKOnly, "警告"
  cn_Check = False
 End Select
Else
 cn_Check = True
End If
TomScissors
ベテラン
会議室デビュー日: 2003/06/05
投稿数: 79
投稿日時: 2004-06-25 19:56
select 1 from dual
などのSQLを実行してみるというのはどうでしょう。

ただ、例えば長めのSQLを処理中に切断された場合などを考慮すると、
事前にチェックというよりも、
普通?に各処理で例外発生時に処理、がよいのではないかと思います。
kshr
常連さん
会議室デビュー日: 2004/04/20
投稿数: 28
お住まい・勤務地: 滋賀
投稿日時: 2004-06-25 20:35
[quote]
TomScissorsさんの書き込み (2004-06-25 19:56) より:
select 1 from dual
などのSQLを実行してみるというのはどうでしょう。

ただ、例えば長めのSQLを処理中に切断された場合などを考慮すると、
事前にチェックというよりも、
普通?に各処理で例外発生時に処理、がよいのではないかと思います。
[/quote]

お返事ありがとう御座いました。
現在、SQL:SELECT SYSDATE FROM DUAL
を行い、例外処理で対処したのですが、その分トラフィックが発生するので
他に良い方法がないものかと。。。

各処理には例外処理を行うハズなのですが
今回、全ての端末が無線LANを使用する事になっており
例えば、商品マスター画面を開き編集を行い
登録処理をせずに席を離れ・・・数十分後に
戻り、登録処理ボタンをクリックすると、
無線LANではセッションが切れてしまうのか
DBへ接続できなくなる現象を【過去】に経験しております。
注:非接続構成

現在の無線では有線なみにセッションを確保してくれる
商品もあるようですが。。。

そこで、各処理(DBへ接続を行うような)の前に
DBへの接続を確認し
接続されていなければ「再接続」を行う処理をし
接続出来れば(無線LANによるセッション切断回避用)
何事も無かったかのように処理を進めたいなという考えから
DB接続チェックを行っております。
1

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