2009-11-05 93 views
1

我在這裏使用Visual Basic 2008,並且正在調試連接到我的SQL數據庫的代碼並在其中寫入內容。它工作正常,一直到我遇到這樣的錯誤。 NullReferenceException未處理。這是怎麼回事?這裏是我正在使用的代碼:Visual Basic 2008 - NullReferenceException錯誤?

Dim conn As MySqlConnection 
        conn = New MySqlConnection 
        conn.ConnectionString = "server=...; user id=...; password=...; database=..." 
        Try 
         conn.Open() 
        Catch myerror As MySqlException 
         MsgBox("Error connecting to database") 
        End Try 
        Dim myAdapter As New MySqlDataAdapter 
        Dim sqlquery = "SELECT * FROM user WHERE username = '" + TextBox2.Text + "'" 
        Dim myCommand As New MySqlCommand() 
        myCommand.Connection = conn 
        myCommand.CommandText = sqlquery 
        myAdapter.SelectCommand = myCommand 
        Dim myData As MySqlDataReader 
        myData = myCommand.ExecuteReader() 

它強調其對周圍conn.open(),並給了我這個錯誤。它工作得很好,直到我將我的sql數據庫移到我的mac。 (windows - > mac)有區別嗎?我從我的Windows Vista計算機備份了我的東西,並在我的Mac上恢復了它。我不認爲有什麼區別,但我只是把它放在那裏。爲什麼會出現這個錯誤?

感謝,

凱文

回答

0

我真的不能說這個問題是從我頭頂的東西。

但是,找出的方法是在conn = New MySqlConnection上放置一個斷點,然後查看您逐步完成的變量。

如果問題發生在conn.Open行上,那麼它可能是因爲conn爲null(無)。但是如果是這種情況,那麼conn.ConnectionString應該拋出一個異常。

另一個步驟是查看異常的堆棧跟蹤,看看它是從哪裏拋出。例如,它可能是mysql連接器內某處的錯誤。

對不起,我不能給你一個明確的答案,但我認爲一些一般的評論可能會幫助你解決方案或找到更多的細節。

+0

是的,我認爲它的空,儘管我還沒有嘗試過。 – lab12 2009-11-05 01:14:28

+0

好吧,我已經試過了,在它上面放置了一個斷點,它說它沒有任何值。我該怎麼辦? – lab12 2009-11-05 01:50:37

+0

如果連接沒有任何問題,則您的分配代碼不能工作。 所以我會看看conn = new MySqlConnection()。我不知道爲什麼它不起作用,過去我使用過類似的代碼,它運行良好。這可能與我猜測的操作系統有關,可能是您使用的連接器的版本。作爲第一次打可能嘗試其他重載,給連接字符串的構造函數。 – Glenn 2009-11-05 02:33:35

0

你用的是哪種版本的MySql?你有沒有看着這個錯誤的詳細信息...

http://bugs.mysql.com/bug.php?id=26393

...這是空閒時間有關。

如果您有完整的堆棧跟蹤與異常關聯,那麼它可能會解決一些問題。

+0

我應該升級到5.4社區服務器嗎? – lab12 2009-11-05 01:17:06

+0

我不想說。從描述中很難判斷這是否是同一個問題。 – 2009-11-05 01:46:17

1

我會建議查看您的連接字符串。我用你的代碼並連接到我們的本地MYSQL數據庫沒有錯誤。