我在此代码中遇到错误:对象引用未设置为对象的实例。
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
如何解决此错误?
答案 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