0

我在这段代码中收到一条错误消息:object reference not set to an instance of an object

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

我该如何解决这个错误?

4

2 回答 2

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
于 2012-11-19T11:44:18.370 回答
2

我假设您收到该错误是因为连接尚未初始化。Using但是我建议不要使用字段,而是创建一个局部变量,因为您应该始终使用-statement尽快关闭连接。所以在你需要的地方而不是全局的地方创建一个连接。

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

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
于 2012-11-19T11:45:40.617 回答