- PR -

VB.NETからoracle 接続

投稿者投稿内容
みつばちまあや
会議室デビュー日: 2005/09/07
投稿数: 8
投稿日時: 2005-09-07 08:30
VB.NETからODP.NEtを使用して接続するとopen状態になるものの
oracleDataReaderやoracledataAdapterなどでエラーがでます。
(接続の確認もしています)

<環境>
WIN XP
VB.NET2003
ODP.NET
oracle10g 10.2.0.1

<エラー内容>
System.InvalidOperationException' のハンドルされていない例外が
oracle.dataaccess.dll で発生しました。

追加情報 : この操作に対して接続がオープンされている必要があります。

<プログラム>
Dim oracon As OracleConnection = New OracleConnection
oracon.ConnectionString = "user id=scott;password=tiger;data
source=orcl;"

Try ' Open the connection
oracon.Open()
Console.WriteLine("Connection to Oracle database
established successfully !")
Console.WriteLine(" ")

Catch ex As Exception

Console.WriteLine(ex.Message)
End Try

MessageBox.Show(OraCon.State.ToString() & "状態です", "結果通知")

Try
Dim strSQL As String = "select * from emp"
Dim Cmd As New OracleCommand(strSQL, OraCon)
Dim Rdr As OracleDataReader = Cmd.ExecuteReader()
While Rdr.Read()
TextBox1.Text = TextBox1.Text & Rdr.GetInt16(0)
& " " & Rdr.GetString(1) & vbCrLf
End While
Rdr.Close()
Rdr.Dispose()
OraCon.Close()
Catch ex As OracleException
MsgBox(ex.Message)
End Try
End Sub

接続の確認が2回も無駄に入っていますが、そこではopenしましたとでま
す。
なぜエラーが出るかわからないのでお願いします

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-07 08:34
こんにちは、じゃんぬ です。

例外が起きるのは以下の箇所でしょうか?

コード:

While Rdr.Read() 
    TextBox1.Text = TextBox1.Text & Rdr.GetInt16(0) & " " & Rdr.GetString(1) & vbCrLf
End While





_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
みつばちまあや
会議室デビュー日: 2005/09/07
投稿数: 8
投稿日時: 2005-09-07 08:44
Dim Rdr As OracleDataReader = Cmd.ExecuteReader()
の部分でエラーがでます
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-07 08:57
こんにちは、じゃんぬ です。

引用:

みつばちまあやさんの書き込み (2005-09-07 08:44) より:
Dim Rdr As OracleDataReader = Cmd.ExecuteReader()
の部分でエラーがでます


ということは例外内容どおり、接続が確立できていないってことですかね。

コード:

Try ' Open the connection
    oracon.Open()
    Console.WriteLine("Connection to Oracle database established successfully !")
    Console.WriteLine(" ") 
Catch ex As Exception 
    Console.WriteLine(ex.Message) 
End Try


この部分で、本当に例外は起きていませんか?
つまり、本当にココを通ってきています?
 Console.WriteLine("Connection to Oracle database established successfully !")
この部分は出力されていますか?
ブレーク ポイントを Open メソッドの箇所において、
インラインで実行してみてください。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
みつばちまあや
会議室デビュー日: 2005/09/07
投稿数: 8
投稿日時: 2005-09-07 11:36
Console.WriteLine("Connection to Oracle database established successfully !")
ここは通っているはずです。
メッセージでConnection to Oracle database established successfully とでますし、
MessageBox.Show(OraCon.State.ToString() & "状態です", "結果通知")
↑ここでopen状態ですと確認も取れています。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-09-07 11:58
お世話になります。

引用:
Catch ex As OracleException
  MsgBox(ex.Message)


↑でCatchしたExceptionはどんな
メッセージを吐き出していますか?
みつばちまあや
会議室デビュー日: 2005/09/07
投稿数: 8
投稿日時: 2005-09-07 12:44
えっとそこではエラーがでてないです。ここでエラーがでないとおかしいでしょうか・・・
でてるエラーは
Dim Rdr As OracleDataReader = Cmd.ExecuteReader()
のところで
System.InvalidOperationException' のハンドルされていない例外が
oracle.dataaccess.dll で発生しました。

追加情報 : この操作に対して接続がオープンされている必要があります。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-07 12:50
こんにちは、じゃんぬ です。

引用:

みつばちまあやさんの書き込み (2005-09-07 12:44) より:

System.InvalidOperationException' のハンドルされていない例外が
oracle.dataaccess.dll で発生しました。


それは、OracleException しか Catch してないからですね。

コード:

Catch ex As OracleException 
    MsgBox(ex.Message)


ね。

ここに、もう 1 つ Catch 句を追加しましょう。
(まあ元の Catch 句はテスト用な気がしますので置き換えてもいいですが)

コード:

Catch ex As Exception 
    MessageBox.Show(ex.ToString())


これで、どんな例外が起きているのか教えてください。


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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