• ベストアンサー

DBの接続について

昨日も同じ質問したのですが また、助けてください DBの接続状態がしりたいのですが DBの接続状態を認識させるために If OraDatabase.State = adStateClosed Then DB_Connect End If ってコーディングいたしました が、一行目でエラー発生でその後の処理が 通りません DB接続部はこんな感じです。 Private Sub DB_Connect() On Error GoTo ERR Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase("ALARM", "ALARM/SHINKO", 0&) End Sub どうか助けてください お願いします 開発環境VB6.0 DBはオラクル9iです

  • bell9
  • お礼率31% (14/44)

質問者が選んだベストアンサー

  • ベストアンサー
  • Azzuri
  • ベストアンサー率68% (34/50)
回答No.2

昨日回答したものです。 ADOと言われていましたが、oo4oですね。 動かないのは当然です。 ステータスを確認できるプロパティはないので、 エラーコードで判定することになります。 以下の様にしてDB_Connectを呼べば、接続しているいないに関係なく接続できます。 Private Sub DB_Connect() Set OraDatabase = Nothing Set OraSession = Nothing Set OraSession = CreateObject("OracleInProcServer.XOraSession") if err <> 0 then MsgBox "データベースに接続出来ません。" end end if Set OraDatabase = OraSession.OpenDatabase("ALARM", "ALARM/SHINKO", 0&) if err <> 0 then MsgBox "データベースに接続出来ません。" end if End Sub

bell9
質問者

補足

何度もすみません 違うプログラムと 勘違いをしておりました この場合DBの方にセッションがたまりませんか? 大丈夫であればこれで再チャレンジを してみようと思います

その他の回答 (3)

回答No.4

#1です 失礼しました。 文法間違いとは・・・ #1の発言は無視してください。

  • Azzuri
  • ベストアンサー率68% (34/50)
回答No.3

#2ですが、いちいち接続しているか確認するよりも、 最初に接続しておいて、アプリケーション終了時に 接続を解除する方法が普通だと思います。負荷も かかりませんし。 データの取得・更新時に失敗した場合、ネットワークか DBに問題があるわけで、プログラムからすれば ロールバックなどでデータを保護する以外に手立ては ありません。

bell9
質問者

お礼

ありがとうございます 現状の流れを変えたくなかったため 接続の確認をしたかったのですが 素直に接続を切って再接続という流れに 変えようと思います。 またなにかあったらよろしくお願いします ほんとありがとうございました

回答No.1

msgbox OraDatabase is Nothing If OraDatabase.State = adStateClosed Then   DB_Connect End If として、メッセージボックスに"True"が表示されませんか?

関連するQ&A

  • VBAでoo4oを使用してINSERTする際にエラーが発生

    Excelのマクロでoo4oを使用してINSERTをしようとしています。 Dim OraSession As OraSession Dim OraDatabase As OraDatabase Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase(TNS, USER/PASS, 0&) OraSession.BeginTrans OraDatabase.ExecuteSQL("Insert Into tablename ( colum1, colum2) VALUES( '12345', '1234');") OraSession.BeginTrans OraDatabase.ExecuteSQLでINSERTしようとした場合に、「ORA-00911: 文字が無効です。」とエラーになってしまいます。 同じSQL文をSQL PLUS+で実行させた場合、正常にINSERTができます。 何か特別な処理をしないといけないのでしょうか。 よろしくお願いします。

  • 【エクセルVBA】DBのデータをCSVに

    VBA初級者です。 oracleDBのデータをCSVへ出力するマクロをVBAで作成中ですが、実装方法が分からず困っています。 ・DB接続はoo4o ・エクセルは2010 ・SQLで取得したデータを1レコードづつCSVに書き出したい ・カラム名をヘッダーとして書き出したい 以下のような実現方法でできるか…?と考えたものの、 肝心のマクロ(VBA)でのDBデータの取得⇒CSVへの書き込み方法がいくら調べてもわかりません。 CSVからDBへのインポートはたくさんあったのですが…。 そもそも取得したレコードを配列で保持して書き出す、という考え方が合っているのか?ヘッダー(カラム名)はどのように書き出せばいいか? など疑問が尽きません。何卒お力添え頂ければ幸いです。 --ボタンクリック時のアクション-- (1)変数定義 (2)DB接続情報確認 (3)DB接続 'DB接続 Set oraSession = CreateObject("OracleInProcServer.XOraSession") Set oraDatabase = oraSession.OpenDatabase(dbSid, dbUser & "/" & dbPass, ORADB_DEFAULT) (4)書き込み用のCSVファイルを作る (5)SQLを実行し返ってきた結果をsplit関数で配列としてwriteListにAddする (5)作成したCSVファイル内にwriteListのデータをPrint #で書き出す (6)完了メッセージを表示 MsgBox "完了しました " (7)DBの切断 'DBクローズ Set oraDatabase = Nothing Set oraSession = Nothing --SQLを実行するメソッド-- (8)SQLを記述、SELECT結果を(5)に返す 恐れ入りますがよろしくお願いいたします。

  • ASPでoo4o接続ができません。

    WindowsXPpro(IIS6.0) + Orale9i + ASPで開発をしていますが、 oo4o接続がうまくいかず困っています。 IISとDBサーバは同マシン内の同ドライブ(C)にあり、 現在、やむを得ず、DBサーバにて開発を行っています。 色々調べ、以下のことは全て試してみましたが、 どうしても以下のエラーが出てしまいます。 なお、VB6.0で同じDBにoo4oで接続するサンプルを作って試しましたが、 そちらはうまくいきました。 わかる方、どうかご教授ください。 【試したこと&確認したこと】 ・oo4oはインストールされている ・oip9.dll のレジストリ登録(念のため) ・ora92フォルダに、インターネットゲストアカウントの  読み取り実行&書き込みのアクセス許可を与える  (ちなみにフルコントロール許可を与えてもダメでした) ・SQLNET.oraファイルを以下のように書き換え  SQLNET.AUTHENTICATION_SERVICES= (NONE) 【global.asa】 <OBJECT RUNAT=Server SCOPE=Application ID=OraSession PROGID="OracleInProcServer.XOraSession"> </OBJECT> <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Session_OnStart 'OO4O用の設定(Net*8を使用してOracle8に接続する) Set Session("OraDatabase") = OraSession.DbOpenDatabase ("sun151_ora803", "scott/tiger", Clng(3)) Set Session("OraDynaset") = Session ("OraDatabase").DbCreateDynaset("select * from emp order by empno", Clng(4)) End Sub Sub Session_OnEnd Set Session("OraDynaset") = Nothing Set Session("OraDatabase") = Nothing End Sub </SCRIPT> 【エラー内容】 Microsoft VBScript 実行時エラー (0x800A01FB) 例外が発生しました。: 'OraSession.DbOpenDatabase'

  • VB6でのPL/SQLの実行について

    現在VB6(SP6)でORACLEのデータベースに接続後、プロシージャを実行してOUTのパラメータを取得したいと思ってプログラムを作っております。 ORACLEへの接続はいろいろ調べてできたのですが、プロシージャの実行(呼び出し)のしかたがわからず困っております。 PL/SQL(プロシージャ名"TEST_DATA") out1 = TEST(OUTパラメータ1) out2 = これはテストです。(OUTパラメータ2) VB6(SP6) Dim OraSession As OraSession Dim OraDatabase As OraDatabase Dim OraDynaset As OraDynaset Dim P1 AS String Dim P2AS String '接続処理 Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase("TEST", "TEST/TEST DB_DEFAULT) OraSession.BeginTrans 'ここでPL/SQLを実行して、パラーメタを取得したいです。 '取得したパラメータをセット P1 = パラメータ1(TEST) P2 = パラメータ1(これはテストです。) OraSession.CommitTrans '結果表示 Call MsgBox(P1 & "結果" & P2) ご教授のほどをお願いいたします。

  • 【エクセルVBA】OraDBのデータをCSVへ出力

    VBA初級者です。 oracleDBのデータをCSVへ出力するマクロをVBAで作成中ですが、実装方法が分からず困っています。 ・DB接続はoo4o ・エクセルは2010 ・SQLで取得したデータを1レコードづつCSVに書き出す ・カラム名をヘッダーとして書き出す 以下のような実現方法でできるか…?と考えたものの、 肝心のマクロ(VBA)でのDBデータの取得⇒CSVへの書き込み方法がいくら調べてもわかりません。 CSVからDBへのインポートはたくさんあったのですが…。 そもそも取得したレコードを配列で保持する、という考え方が合っているのか?ヘッダー(カラム名)はどのように書き出せばいいか? など疑問が尽きません。何卒お力添え頂ければ幸いです。 --ボタンクリック時のアクション-- (1)変数定義 (2)DB接続情報確認 (3)DB接続 'DB接続 Set oraSession = CreateObject("OracleInProcServer.XOraSession") Set oraDatabase = oraSession.OpenDatabase(dbSid, dbUser & "/" & dbPass, ORADB_DEFAULT) (4)書き込み用のCSVファイルを作る (5)SQLを実行し返ってきた結果をsplit関数で配列としてwriteListにAddする (5)作成したCSVファイル内にwriteListのデータをPrint #で書き出す (6)完了メッセージを表示 MsgBox "完了しました " (7)DBの切断 'DBクローズ Set oraDatabase = Nothing Set oraSession = Nothing --SQLを実行するメソッド-- (8)SQLを記述、SELECT結果を(5)に返す 恐れ入りますがよろしくお願いいたします。

  • ASP.NETにおいて単純にオラクルDBに接続する方法

    Private mvarSession As Object Private mvarDatabase As Object ''データベースの生成() mvarSession = CreateObject("OracleInProcServer.XOraSession") '' データベースオープン mvarDatabase = mvarSession.OpenDatabase("SERVER", "○○○/○○○") と記述していますが、動作しません。。。 オラクルDBに接続する方法のご教授をお願いします。

  • OracleとVB6.0を勉強している学生です。

    OracleとVB6.0を勉強している学生です。 あるテーブルから全てのレコードを抽出してCSVで出力させたいのですが なかなかうまく行かないので悩んでおります。 TEST1 というテーブルには名前、年齢、住所、電話番号etc というフィールドがあり 数100件のレコードがある場合 その全てのレコードをcsvに出力する所で詰まって おります。 記述しているコードですが 'Oracleとの接続 Set OraSession = CreateObject("OracleInProcServer.XOrasession") 'DataBaseとの接続 Set OraDataBase = OraSession.DbOpenDataBASE(ORADBNAME, ORADBCONECT, 0&) SQL = "SELECT * FROM TEST1" Set Oradynaset = OraDataBase.DbCreateDynaset(SQL, ORADYN_READONLY) Do Until Oradynaset.EOF '出力 Open OUTPATH &"test1" & ".csv" For Append As #10 Len = 3 Print #10, ????????? ←この場所の記述の仕方 Close #10 step1: Loop Exit Sub End Sub Printでどう記述すればTEST1のレコード全てをCSVに出力できるかがわかりません。 DBへの接続は成功しております。 何卒よろしくお願いします。

  • VB.NETでORACLEにoo4o接続した後、SELECT文を使う手順は?

    mdbのADO接続による方法は例文が多くあったので、それを参考に作り込むことができて完成してたのですが、mdb&ADO接続自体が却下されて、ORACLE&oo4oで一から作り直しとなりました。 ORACLEへのoo4o接続までは調べて出来た(----以下)のですが、その先のデータ抽出方法が良くわかりません。 "MASTER_SYAIN"テーブルから、社員コード(例:Syaincd=123)で社員名(Syainnm)を取ってきたいのですが。 以下の感じのSELECT文になると思うのですが、これをいきなり記述してもエラーになりますよね? 前後の具体的な記述はどうなりますでしょうか? ホントすいません・・・SQL初心者で。 SELECT Syainnm FROM MASTER_SYAIN WHERE Syaincd = '123' ------------------------------ Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  Dim dbname As String  Dim cnuser As String  On Error GoTo errorHandler    StatusBar1.Panels(0).Text = "データベースに接続中・・・"  dbname = "oracle"  cnuser = "user/pass"  OraSession = CreateObject("OracleInProcServer.XOraSession")  OraDatabase = OraSession.OpenDatabase(dbname, cnuser, ORADB_DEFAULT)  StatusBar1.Panels(0).Text = "データベース接続完了。"  On Error GoTo 0  Exit Sub errorHandler:  If Err.Number = ORACLE_DB_CONNECTING_FAILURE Then   StatusBar1.Panels(0).Text = "データベースに接続出来ません。" & Chr(10) & "エラーコード:" & Err.Number   Resume Next  End If  Error Err.Number End Sub

  • EXEで実行すると発生するORA:06413エラー

    VBからORACLEへ接続するプログラムを作っています。 VBのエディット画面から実行すると正常に動作するのですが、コンパイルを行いEXEから実行すると下記エラーが発生します。 「Fatal NI connect error 6413,」 以下のOpenDatabaseでエラーが発生しているところまでは突き止めたのですが なぜエラーとなるか、まったく検討がつきません。 Set objOr = CreateObject("OracleInProcServer.XOraSession") Set objDb = objOr.OpenDatabase(mstrSVN, mstrUID & "/" & mstrPWD, 0&) どんなささいな情報でもお持ちの方、よろしくお願いします。

  • VBからOracle接続が出来ません。

    こんにちは。 VisualBasic6.0EnterprizeEdition から Oracle8i の接続を試みております。 接続が出来ません。コードは本のものをそのまま書いたので、間違いはないと思います。 Private Function OraOPN() As Boolean Dim strDB As String * 30 'サービス名 Dim strUID As String * 30 'ユーザー名 Dim strPWD As String * 30 'パスワード Dim strUP As String Dim strMSG As String 'エラー時のメッセージ On Error GoTo Ora_Error strDB = Trim(txtLogon(2).Text) strUID = Trim(txtLogon(0).Text) strPWD = Trim(txtLogon(1).Text) strUP = strUID & "/" & strPWD strMSG = "データベースへの接続ができません" Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase(strDB, strUP, &H1&) OraOPN = True Exit Function Ora_Error: OraOPN = False Call MsgBox(strMSG & vbCrLf & " システム管理者に連絡してください" & vbCrLf & vbCrLf & "", vbCritical) End End Function 以上のコードで、接続できません。本に書いてあるとおりそのままのコードです。オラクルサーバとVBプログラムは同一マシン上に置いてあります。 私は、Java専門でVBはわかりません。誰かわかる方がいたら、教えてください。よろしくお願いします。