2015-04-12 60 views
0

我有一個名爲dbOPS一個公共類,有一些潛艇和功能,如:是否可以使用類連接到我的SQL Server數據庫?

Public Function getSqlReader(ByVal sql As String) As SqlDataReader 
    Dim cmd As New SqlCommand(sql, getConn) 
    cmd.CommandTimeout = 360 
    Dim dr As SqlDataReader = cmd.ExecuteReader(Data.CommandBehavior.CloseConnection) 

    Return dr 
End Function 

Public Function getSqlScalar(ByVal sql As String) 
    Dim cmd As New SqlCommand(sql, getConn) 
    cmd.CommandTimeout = 360 
    Dim cnt = cmd.ExecuteScalar 
    closeCX() 
    Return cnt 
End Function 

Public Sub ExecuteSql(ByVal sql As String) 
    Dim cmd As New SqlCommand(sql, getConn) 
    cmd.CommandTimeout = 360 
    cmd.ExecuteNonQuery() 
    closeCX() 
End Sub 

然後我用下面的命令每頁一次,並使用DB變量很多(多)次整個頁面:

Dim db as new dbOPS 

最近,我開始越來越多的錯誤

的ExecuteScalar需要一個開放和可用的連接。連接的當前狀態正在連接

這是原因嗎?

有沒有辦法解決這個問題,而不用重寫每個頁面和每條命令來打開自己的連接?

感謝

+0

取決於,但不要忘記你使用usings不知道VB.NET中的關鍵詞,以便處置你創建的一次性對象! Ipmlement函數給你一個新的打開的SQLConnection,儘快完成CRUD的處理連接 – Legends

+0

我有我的所有讀者關閉和配置設置 – Yoni

+0

它們在錯誤的情況下關閉嗎? – Legends

回答

0

這也可能是最好的檢測連接,然後重新打開,以防萬一它不是之前執行命令打開。

If (cmd.Connection.State != ConnectionState.Open) Then 
    cmd.Connection.Open() 

將此作爲輔助方法的一部分。

相關問題