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

このQ&Aのポイント
  • VB.NETでORACLEにoo4o接続した後、SELECT文を使う手順について教えてください。
  • mdb&ADO接続自体が却下されて、ORACLE&oo4oで一から作り直す必要があるため、データ抽出方法がわかりません。
  • 具体的な記述方法について詳しく教えていただけると助かります。
回答を見る
  • ベストアンサー

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

  • THUBAN
  • お礼率76% (771/1002)

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

VB.NETなんよねぇ? ADO.NET使った方が良いんじゃぁ・・・・? わざわざoo4oを使う理由が見当たらない。 まぁ良いや、oo4oで話を進めよう。 OraSession = CreateObject("OracleInProcServer.XOraSession") OraDatabase = OraSession.OpenDatabase(dbname, cnuser, ORADB_DEFAULT) でOracleと繋がったあかつきには、 OraDynaset = OraDatabase.CreateDynaset("select ほにゃほにゃ", 0) でデータを取ってくるのと、 OraDatabase.ExecuteSQL("insert ほにゃほにゃ") でデータを書き込む事ができれば最悪後は全部SQL文でなんとかなるやね。 まとめると、oo4oの基本的な使い方は 1.OraSessionオブジェクトを作る 2.OraSession.OpenDatabaseでOraDatabaseオブジェクトをゲット 3.OraDatabase.CreateDynasetでOraDynasetオブジェクトをゲットしたり、OraDatabase.ExecuteSQLでデータ操作したり 4.OraDatabaseを閉じ、OraDatabaseとOraSessionを破棄 となる。参考までに、ADOとの対比を述べておこう。 oo4o:ADO OraSession:ADODB.Connection OraDatabase:ADODB.Connection OraDynaset:ADODB.Recordset OraFields:ADODB.Fields 後、Oracleのエラーに関する情報はErrオブジェクトじゃなくって、OraSession.LastServerErrかOraDatabase.LastServerErrを使う。

THUBAN
質問者

お礼

なぜ、oo4oなのかは、それがSEの仕様(好み)だからなのです。(^^; 私も、ADOあたりでやって欲しいのですが、そのSEさんは、過去の設計開発のときに、ODBC接続で懲りたらしく、どうもMS系が提唱する技術などに、斜め見&目くじらを立てるようなんです。 ADOって、ODBCの延長上なのですかね? はぁ~、PG側としても付き合っていくのが大変・・(^^; そんなわけで、ほとんどSEの好き嫌いで、oo4oになったわけです。 それはさておき、VB.NET + oo4oの記述例があまり無くて困っておりましたが、お教え下さった手順、助かります。 参考にして、ちょっと、やってみたいと思います。 どうも、ありがとうございました。

関連するQ&A

  • 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はわかりません。誰かわかる方がいたら、教えてください。よろしくお願いします。

  • vbからoracleへの接続

    vbからoracleへの接続について教えて下さい。 ORACLEデータベースにoo4oを使って接続をしているのですが、Oracleクライアントをインストール済みのPCでは何ら問題なく接続できます。 OracleクライアントをインストールしていないPCではエラーメッセージがでてしまいます。 処理はこんな感じです... Public ssOra As Object       Public dbOra As OraDatabase Public dynOra As OraDynaset Set ssOra = CreateObject("OracleInProcServer.XOraSession") Set dbOra = ssOra.OpenDatabase("HRH", "HRH00/HRH00", 0&) Set dynOra = dbOra.DbCreateDynaset("select * from 消耗品_注文履歴", 0&) Set ssOra... のところでエラーとなってしまいます。エラー内容は ********実行時エラー'429'***************************** ActiveXコンポーネントはオブジェクトを作成できません ************************************************** activeX,oracle関連のDLLファイルは参照設定に登録しています。 これを解決するためにはOracleクライアントをインストールするしかないのでしょうか? また、インストールしたらエラーは本当になくなるのでしょうか? 皆様宜しくお願いします。 ちなみにクライアントPCはOS:WIN95 oracleバージョン8.1.7です

  • 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'

  • VB.NETでADOでOracleのストアドを起動

    いつも楽しく勉強させていただいております。 環境はWindows Server 2008R2 DataCenter、データベースはOracle10G、開発ツールはVB.NET2015です。 このたびWindows Server 2003のVB6.0から上記の環境に乗せ換えているところです(Oracleのバージョンは変わりなし)。 最初にVB6.0からVB.NETへの変換はかけましたが、 なるべくVBのソースは変更しないという制約があります(テストのし直しが膨大になるので)。 VBとOracleはADOを使って接続しています。 ADOを使ってテーブルの読み書きはできるのですが、ストアドプロシージャの起動がうまくいきません。 具体的には入力パラメータはストアドに渡って処理も動くのですが、出力パラメータが返ってきません。 ストアドが正しく動くことはObjectBrowserで確認済みです。 下記のソースはVB6.0で動いていたものですが、VB.NET2015では二つの出力パラメータの値がNothingとなります。 (本来ならステータスとメッセージが返ります)。 VB.NET2015でADOでストアドを使うことは無理なのでしょうか。 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim Cnn As New ADODB.Connection Dim cmd As New ADODB.Command Dim Prm As New ADODB.Parameter Dim strMsg As String On Error GoTo Err_cmdExec_Click With Cnn .Provider = "MSDASQL" .ConnectionString = "DSN=DB1;" & "UID=abc;" & "PWD=efg" .Open() End With 'ストアドプロシージャ呼び出し設定&呼び出し With cmd .CommandTimeout = 0 'タイムアウト設定を無制限に .ActiveConnection = Cnn 'サーバー接続設定 .CommandText = "CHECK_PROC" 'ストアド名セット .CommandType = ADODB.CommandTypeEnum.adCmdStoredProc 'ストアドなのでadCmdStoredProc Prm = .CreateParameter("p_yyyymm", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 6, "201601") cmd.Parameters.Append(Prm) Prm = .CreateParameter("p_sts", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamOutput, 1) cmd.Parameters.Append(Prm) Prm = .CreateParameter("p_msg", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamOutput, 512) cmd.Parameters.Append(Prm) '実行 .Execute() '戻り値の判断&表示用メッセージ生成 If .Parameters.Item("p_sts").Value = "0" Then strMsg = "正常終了しました" Else strMsg = "異常終了しました" & vbCrLf & "ErrMsg=" & .Parameters.Item("p_msg").Value End If End With Exit_cmdExec_Click: '接続解除 Cnn.Close() 'Set Cnn = Nothing 'メッセージ表示 MsgBox(strMsg) Exit Sub Err_cmdExec_Click: 'ストアド以外の場所でのエラーなので、VBのErrの情報セット strMsg = "異常終了しました" & vbCrLf & "ErrNO=" & Err.Number & " ErrMsg=" & Err.Description Resume Exit_cmdExec_Click End Sub

  • VBからoo4o接続でストアドを呼ぶ方法

    お世話になります、 VBからoo4o接続でストアドを呼ぶ方法を探しています。 <現在の状況> ■ストアドパッケージ ・次のように値を返すストアドパッケージがあるとします。これを CreatePLSQLDynaset で実行して、レコードセットを取得します。(OraDynaset) create or replace package testp is procedure GetTestm(key in number, cu out CHAR); end; / create or replace package body testp is procedure GetTestm(key in number,cu out CHAR) is begin select NAME into cu from TEMP where STATUS=key; end; end; / ■VBのボタンイベント Private Sub Command1_Click() Dim dbname Dim cnuser '** サービス、ユーザ設定 dbname = "aaa" cnuser = "bb/bb" '** oo4o 接続 Set GoORASESSION = CreateObject("OracleInProcServer.XOraSession")  Set GoORADATABASE = GoORASESSION.OpenDatabase(dbname, cnuser, &H0) '** リクエリレコードセットオープン Set Recordset = GoORADATABASE.CreatePLSQLDynaset("Begin testp.GetTestm (1,:cu); end;", "cu", &H0) End Sub これを実行したところ以下のようなエラーが出ました <エラー> ____________________________ 実行時エラー '440' SQL実行エラー,ORA-06550:行:1、列:7 PLS-00306:'GETTESTM'の呼び出しで、引数の数または型が正しくありません ORA-06550:行:1、列:7 PL/SQL:Statement ignored _______________________________ というエラーが出てしまいます、引数の数は合っていると思うのですが、どこがお菓子のでしょうか? よろしくお願いします。

  • VB.NET Oracle接続 32、64bit

    VB.NET 2010でOracle11gに接続するプログラムを作っていますが、 接続方法がいまいちわからずに困っています。 プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、 Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。 ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。 パラメータ値は例です。 (Web.configに記述) <connectionStrings> <add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1" providerName="System.Data.OleDb" /> </connectionStrings> 次に、コンソールプログラムを作成し、同じサーバーで上記と同様の接続文字列で 接続しようとしましたが、エラーとなり接続できませんでした。 いろいろ記述を変えても接続できませんでしたが、最終的にOracle Clientの 32bit版を64bit版と違うフォルダにインストールし、以下の接続文字列で接続 できました。(INIファイルに記載) ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1 この状態でWEBアプリの方は何を使っているのかと思い、64bit版のインストールフォルダを リネームしたところ、WEBアプリの方は接続できなくなりました。 現状では32bitと64bitのOracle Clientが両方必要な状況ですが、本来ならどちらかだけで すむと思います。 32bitと64bitで接続文字列が変わるという情報は得られませんでした。 何がまずいのでしょうか? 最初から32bit版をインストールすれば良かったのでしょうか。

  • VBからOracleに接続できない

    Visual BasicからOracleに接続すると、下記のエラーになり接続できません。 型 'System.TypeInitializationException' の初回例外が DBConnectSample.exe で発生しました 追加情報:'Oracle.DataAccess.Client.OracleConnection' のタイプ初期化子が例外をスローしました。 接続部分のソースコードは以下になります。(★がエラーになるコード) -----ここから----- Imports Oracle.DataAccess.Client Imports Oracle.DataAccess.Types 'Connectionオブジェクトの生成 Dim cnn As New OracleConnection ★ 'Oracleへのコネクションの確立 cnn.ConnectionString = "User Id=<user>; Password=<pass>; Data Source=ora11g" 'Oracleへの接続 cnn.Open() -----ここまで----- あと、他にやった事といえば、これぐらいです。 ・[参照の追加]でOracle.DataAccess 4.112.4.0を追加 ・[ビルド]はOSに合わせてx64を選択 色々ググってみても何が足りないのか、何が間違っているのか見当がつきません。

  • VB.netでのMySQLの接続エラーについて

    VB.netでのMySQLの接続エラーについて 『行いたい事』 レンタルサーバー(ロリポップ)で管理しているサイトのデータベース(MySQL)にパソコンから接続したいと考えています。 パソコンからレンタルサーバーで管理しているデーターベースにアクセスするための言語はVB.netを使用しています。 パソコンからVB.netにてSQLを使用してサーバーにあるデータベースのデータの取得等を行いたいと考えています。 『問題』 下記プログラムにてstrPasswordに直接、レンタルサーバー(ロリポップ)より取得したパスワードを記載しているのですが、Open() 時にエラーとなってしまいます。 下記★の部分が、会社からインターネットに接続する為のプロバイダーから取得しているパスワードに自動的に変わってしまいます。 基本的な事で申し訳ありませんが、ご教授のほどよろしくお願いします。 ●環境 ・Windows XP ・Visual Studio 2008 ・.NET Framework3.0 sp2 端末からデータベースへアクセスするためにConnector/Netを入手しインストールも行っています。 ●-----エラー内容----- Access denied for user 'ユーザID'@'★ここが変わっています★' (using password: YES) ●-------------------- ●-----プログラム----- Dim strServerName As String = "●●.lolipop.jp" Dim strUserID As String = "ユーザID" Dim strPassword As String = "パスワード" Dim strDataBaseName As String = "データベース名" Dim sqlStr As String Dim dr As MySqlDataReader Dim cmd As MySqlCommand Dim MySql As New MySqlConnection '接続パラメータ定義. Dim strParam = String.Format("Server={0};User ID={1};Password={2};Initial Catalog={3};Convert Zero Datetime=true", _ strServerName, strUserID, strPassword, strDataBaseName) '接続準備 MySql = New MySqlConnection(strParam) '接続 MySql.Open() ★この行でエラーとなり書き換わっています。 'クローズ MySql.Close() ●------------------

  • VB.NET2005からoracle92へ接続するには?

    IDとパスワードを入力し、オラクルのDBにあるIDとパスワードだったら次の画面を開くというプログラムを作りたいです。 オラクルへの接続がうまく行ってないようで画面が固まってしまいます。 プログラムの不具合を教えていただけないでしょうか? よろしくお願いします。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cn As New OleDb.OleDbConnection() Dim cmd As New OleDb.OleDbCommand() Dim rs As OleDb.OleDbDataReader cn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=*;User ID=*;Password=*;" cn.Open() '←ここで、エラーになります。 cmd = cn.CreateCommand() cmd.CommandText = "Select ID from abc" rs = cmd.ExecuteReader() While rs.Read() If TextBox1.Text = cmd.CommandText Then MessageBox.Show("パスワードを受付けました。") Dim frm2 As New Form2 frm2.Show() TextBox1.Clear() TextBox2.Clear() Else MessageBox.Show("パスワードが違います。") TextBox1.Text = "" TextBox1.Focus() TextBox1.Clear() TextBox2.Clear() End if     End While cn.Close() rs.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub End Class

  • ExcelとOracleの連携について

    お世話になります。 Excelで[データ]-[外部データの取り込み]-[データの取り込み]-[新しいソース] -「ODBC DSN」-「接続するODBCデータソース」-「OracleDNS」 -「Oracle ODBCドライバ接続」ではOracleに接続する事は出来、データも Excel上に表示する事が出来ました。 しかし、下記HPの http://www.atmarkit.co.jp/fdb/rensai/excel2oracle02/excel2oracle02_2.html サンプルコードを元にVBAコードを作成したのですが、 'データベース接続処理がうまくいっていない様で、 Err_Han: ' エラー処理 MsgBox (Err.Description) で、「ORA-12154:TNS: 指定された接続識別子を解決できませんでした」 と言うエラーになってしまいます。 VBAにてADOの参照設定とかしていないのですが原因はそれでしょうか。 どなたかご親切な方、ご教示くださいます様、宜しくお願い致します。

専門家に質問してみよう