2009-11-05 80 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数据库没有错误。