|
分類:[VB.NET]
分類:[VB.NET]
いつもお世話になっております。 VB2005・XP Professionalを使用しております。 どう説明するのが一番いいのか手探りの状態で、 説明が長くなること、ご容赦ください。
ODP.NETを使用して、データベースに接続し、 btn1を押下すると、ListBox1にテーブル一覧が表示されます。 ListBox1からテーブルを1つ選択した状態で、 btn2を押下すると、DataGridView1に選択したテーブルの内容が 表示されます。
ところが、下記コードでは、btn2押下時に、 共通変数のところでエラーが発生します。
****以下コード****** /////共通変数.vb///// Imports Oracle.DataAccess.Client Imports Oracle.DataAccess.Types
'---- Oracle 接続 ---- Public pConnectionStr As String = "***" Public pUserId As String = "***" Public pPassWord As String = "***"
Public mCON As New OracleConnection 'データベースコネクション Public Sub DBConnect()
'DB接続 mCON.ConnectionString = "User Id=" & pUserId & _ ’ここにエラーがでます "; PassWord=" & pPassWord & _ ’ここにエラーがでます "; Data Source=" & pConnectionStr ’ここにエラーがでます
mCON.Open() End Sub
Public Sub DBNonConnect()
'DB切断 mCON.Close() mCON = Nothing
End Sub End Module
/////btn2クリック時/////// Private Sub btn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDate.Click
Dim mCON As New Oracle.DataAccess.Client.OracleConnection Dim da As New Oracle.DataAccess.Client.OracleDataAdapter("SELECT * FROM " & txtTableName.Text, mCON) Dim ds As New DataSet
Call DBConnect() da.Fill(ds, txtTableName.Text)
Me.DataGridView1.DataSource = ds Me.DataGridView1.DataSource = ds.Tables(txtTableName.Text)
mCON.Close() End If End Sub
******コード終わり******
エラー内容は、NullReferenceExceptioはハンドルされませんでした。 オブジェクト参照がオブジェクトインスタンスに設定されていません。 です。
btn1押下時は、共通変数を問題なくもってくることが出来ます。
****btn1のコード****** Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim LSQL As String Dim mCMD As New Oracle.DataAccess.Client.OracleCommand Dim LRst As Oracle.DataAccess.Client.OracleDataReader
Call DBConnect() LSQL = "select * from **** order by TABLE_NAME"
mCMD.Connection = mCON mCMD.CommandText = LSQL LRst = mCMD.ExecuteReader
Do While LRst.Read 'テーブル名を出力() ListBox1.Items.Add(LRst("TABLE_NAME")) Loop ' 終了処理 LRst.Close() Call DBNonConnect()
End Sub ******************
btn2で、共通変数が上手く持ってこれていないと思うのですが、 どこに問題があるのでしょうか。 ためしに、共通変数を使わずに、btn2のところに直接コードを 記入すると、上手く表示はできました。(砂時計が動いたままですが・・)
|