打开连接时未处理NullReferenceException

时间:2012-11-19 11:40:48

标签: vb.net winforms

我在此代码中遇到错误:对象引用未设置为对象的实例

Private Sub frmAdd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    con.ConnectionString = strcon

    con.Open()

con.ConnectionString = strcon

如何解决此错误?

2 个答案:

答案 0 :(得分:3)

这意味着您使用的是null变量(它未设置为指向任何对象的实例)。在这种情况下,con必须为null,因此您需要检查它是否为null,如果是,则将其设置为新对象。例如:

If con Is Nothing Then
    con = New OleDbConnection()  ' Or whatever type it is...
End If
con.ConnectionString = strcon
con.Open()

或者,更好的是,在声明变量时将其设置为新对象(如果合适),例如:

Dim conn As New OleDbConnection()

然而,正如Tim指出的那样,每次需要时最好创建一个新连接,然后你可以使用Using块,每次都能正确处理该对象:

Using con As New OleDbConnection(strcon)
    con.Open()
    ' Use the connection ...
End Using

答案 1 :(得分:2)

我认为你得到了这个错误,因为连接尚未初始化。但是,我建议不要使用字段来创建局部变量,因为您应该始终使用Using - 语句尽快关闭连接。因此,在您需要的地方创建一个连接,而不是全局

所以这会解决它(但不推荐):

Private Sub frmAdd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    con = new SqlConnection(strcon)
    con.Open() ' <-- don't do that with connection pooling