2016-08-28 5 views
0

私はVisual Studio 2015を使用しています。私はDB2接続が公開されるようにモジュールを作成しようとしています。公開モジュールを作成する

これはログイン手順と似ています。

は、ここに私のログインCODE1

Imports IBM.Data.DB2 
Public Class LoginForm 
Dim dbConn As Common.DbConnection 
Private Sub BtnLogin_Click(sender As Object, e As EventArgs) Handles  
BtnLogin.Click 
    Dim user As String 
    Dim pass As String 

    user = Me.txtUser.Text 
    pass = Me.txtPass.Text 

    dbConn = New DB2Connection("server = localhost; database = hotel;" + "uid = '" & user & "'; password='" & pass & "';") 
    dbConn.Open() 
    If dbConn.State = ConnectionState.Open Then 
     Try 

      Main_Menu_Form.Show() 
      Me.Hide() 
     Catch ex As Exception 
      MsgBox(e.ToString) 
     End Try 
    End If 
End Sub 

だとここで私は(動作しませんどの)CODE2

Module Module1 
Public dbConn As Common.DbConnection 
End Module 

私は接続が異なる形で利用できるようにしたいモジュールに書いたものです。

これは、ここで私は 'System.NullReferenceException' 種類の未処理の例外が

Hotel.exe

に発生しました追加情報CODE3

からもらったエラーだ私のCODE3

Private Sub BtnLogin_Click(sender As Object, e As EventArgs) Handles BtnLogin.Click 
    If dbConn.State = ConnectionState.Open Then 
     Try 
      Dim str As String = "select * from table(EMPLOYEEDISP(20)) as udf" 
      Dim cmd As DB2Command = New DB2Command(str, dbConn) 
      Dim rdr As DB2DataReader 
      rdr = cmd.ExecuteReader 

      DGVEx.ColumnCount = 5 
      DGVEx.Columns(0).Name = "Employee Number" 
      DGVEx.Columns(1).Name = "Name" 
      DGVEx.Columns(2).Name = "Position" 
      DGVEx.Columns(3).Name = "Username" 
      DGVEx.Columns(4).Name = "Password" 


      Dim row As String() 

      While rdr.Read() 
       row = New String() {rdr.GetString(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetString(4)} 
       DGVEx.Rows.Add(row) 
      End While 
      MsgBox("Executed") 
     Catch ex As Exception 
      MsgBox(e.ToString) 
     End Try 
    End If 




End Sub 

次のとおりです。オブジェクト参照がオブジェクト インスタンスに設定されていません。

dbConn.Stateが閉じられていないか接続されていない可能性があります.CODE2(モジュール)に問題があると思います。

モジュールで接続を公開する正しいコードは何ですか?

+0

モジュールなぜモジュールですか?接続クラスを作成して実装する...必要なものを返すヘルパ関数を持つことができます。 – Codexer

答えて

0

CODE3では、dbConnを初期化する必要があります。何が起こるのは、初期化されていないオブジェクトのプロパティ、つまりNullReferenceExeptionの意味にアクセスしようとしていることです。ですから、CODE1で行ったようにそれを行う:

dbConn = New DB2Connection("server = localhost; database = hotel;" + "uid = '" & user & "'; password='" & pass & "';") 

を今、あなたはStateプロパティを確認することができます。
ただし、特にWEBアプリケーションの場合は、この方法をお勧めしません。

実際に必要な場所に接続オブジェクトを使用し、適切に処分します。

Using dbConn = New DB2Connection("server = localhost; database = hotel;" + "uid = '" & user & "'; password='" & pass & "';") 
' Do your stuff... 

End Using 

は今、あなたは dbConnが配置されていることを確認することができますし、何のメモリリークがない:これを行うための最も強力な方法は、 Using声明を通じてです。

+0

初期化されていないオブジェクトを説明してくれてありがとう、今はちょうど私がそれが欲しいのと同じように動作します。 :D – Boneyflesh

関連する問題