投稿者 たか  (社会人) 投稿日時 2024/2/27 16:52:49
紹介いただいたサイトを参考に、Oracle.ManagedDataAccessを参照に追加し、接続文字列を直接埋め込んでみました。
結果として、前回認証に失敗していたPCからも認証ができました。
運用上、接続文字列を直接埋め込むことは特に問題ないと考えています。
しかし、OracleDataReaderオブジェクトからデータを読み込む時点で「例外がスローされました」となってしまいます。
コードを貼り付けますのでご確認いただけますでしょうか。
フォーム上のボタンをクリックすることで、接続からSQL発行までしていますが、「★」の部分で例外が発生します。

Imports Oracle.ManagedDataAccess.Client
Imports Oracle.ManagedDataAccess.Types

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim oraHost As String = "SERVERNAME"
        Dim oraService As String = "SERVICENAME"
        Dim oraUser As String = "USERNAME"
        Dim oraPwd As String = "PASSWORD"
        Dim strSQL As String = String.Empty
        Dim oradb As String = String.Empty

        Try

            oradb = "Data Source=(DESCRIPTION="
            oradb = oradb & "(ADDRESS_LIST ="
            oradb = oradb & "(ADDRESS = (PROTOCOL = TCP)"
            oradb = oradb & "(HOST = " & oraHost & ")"
            oradb = oradb & "(PORT = 1521)))"
            oradb = oradb & "(CONNECT_DATA ="
            oradb = oradb & "(SERVICE_NAME = " & oraService & ")));"
            oradb = oradb & "User Id=" & oraUser & ";"
            oradb = oradb & "Password=" & oraPwd & ";"

            Dim conn As New OracleConnection(oradb)
            Dim F_DATA01 As String = String.Empty
            Dim F_DATA02 As String = String.Empty

            conn.Open()

            strSQL = "Select STAFFCODE, STAFFNAME From M_STAFF"
            Dim cmd As New OracleCommand(strSQL, conn)
            cmd.CommandType = CommandType.Text

            MsgBox(conn.State.ToString) ' コネクションの確認

            Dim dr As OracleDataReader = cmd.ExecuteReader()

            Do While dr.Read()
                F_DATA01 = dr.Item("STAFFCODE")           ' ★
                F_DATA02 = dr.Item("STAFFNAME")           ' ★
                MsgBox(F_DATA01 & vbTab & F_DATA02)
            Loop

        Catch ex As Exception

        End Try

    End Sub
End Class