2011-03-24 76 views
1

僅僅因爲(在我的代碼中)有些時候看起來sqlDataReader被打開並告訴我「已經有一個打開的數據讀取器」
我決定放這一行: If Not SqlReader.IsClosed Then SqlReader.Close()未設置對象實例的對象變量

Select Case PreviousRecord 
    Case True 
     SqlComm = New SqlCommand("Select * from " & tmpName & " where FuelOrderValid = '" & True & "' Order by FuelLoadDate", ReportsSQLConn) 
    Case False 
     SqlComm = New SqlCommand("Select * from " & tmpName & " where FuelOrderValid = '" & True & "' And FuelOrderID = '" & ordNum & "' Order by FuelLoadDate", ReportsSQLConn) 
End Select  

If Not SqlReader.IsClosed Then SqlReader.Close() 

If SqlComm.Connection.State = Data.ConnectionState.Open Then 
    SqlReader = SqlComm.ExecuteReader(CommandBehavior.KeyInfo) 
Else 
    SqlComm.Connection.Open() 
    SqlReader = SqlComm.ExecuteReader(CommandBehavior.KeyInfo) 
End If 

但是現在,當它涉及到執行
If Not SqlReader.IsClosed Then SqlReader.Close()
它給出了錯誤的指令:
Object Variable Not Set To An Instance Of An Object
我實在無法理解WH y正在這樣做。
請問有人幫我嗎?

+0

你能添加更多的上下文嗎? – shaans 2011-03-24 07:50:36

+0

@Shaans:行嗎? – 2011-03-24 07:53:09

回答

4

在致電SqlReader.IsClosedSqlReader.Close之前SqlReader尚未初始化。你可以檢查它的nothing是否這樣:

If SqlReader IsNot Nothing Then 
    ' Do something with the SqlReader' 
Else 
    ' Create a new SqlReader' 
End If 
+0

看起來你的解決方案很好。謝謝 – 2011-03-24 08:09:51

+0

@Lefteris - 太好了。沒問題。 – 2011-03-24 08:11:23

相關問題