2011-04-19 40 views
0

,有一些應用程序使用adodb來訪問mysql服務器。在vb.net中正確關閉了vb.net中的adodb連接

private adoconnect as new adodb.connection 
public adors as new adodb.recordset 

public function returnadors(byval column as string) as string 
return adors.fields(column).value.tostring 
end function 


Public Function ReadData(ByVal strQuery As String, Optional ByVal strWhere As String = vbNullString) As Boolean 

     Try 

      If ADOConnect.State = ConnectionState.Open Then Call CloseConnection() 
      ADOConnect.Open(dsn, user, pass) 
      ADORS.Open(strQuery, ADOConnect, ADODB.CursorTypeEnum.adOpenDynamic) 
      If not ADORS.EOF Then Return True 

     Catch ex As Exception 

      msgbox(ex) 

     End Try 

     Return False 

End Function 

public sub closeconnection() 
    if adoconnect.state = connectionstate.open then adoconnect.close 
end sub 

現在可以說,我們要填充一個文本框與數據庫中的東西:

if readdata("SELECT NAME FROM USERS WHERE ID = 1") then 
    me.textbox1.text = returnadors("NAME") 
end if 
call closeconnection 

重新編寫這些功能是一項艱鉅的任務 - 我沒有興趣這樣做,除非絕對必要的。

雖然這是我的問題。

即使連接被關閉(我已經通過代碼加強,它關閉) 連接仍然是在SQL Server上可見睡眠狀態

爲什麼呢?以及如何確保連接已關閉。

感謝

+0

這聽起來太簡單了,但如果你改變你的代碼是什麼,收之前,關閉您的連接ADORS? – Smudge202 2011-04-19 21:59:25

+0

你的意思是關閉readdata()函數中的adoconnect嗎? – Jeff 2011-04-19 22:02:51

+0

不,我的意思是[adors.Close](http://www.devguru.com/technologies/ado/quickref/recordset_close.html)在closeconnection函數中?編輯 - 此外,將其設置爲無。 – Smudge202 2011-04-19 22:10:19

回答

1

以下內容添加到您的ConnectionString

Pooling=False; 
+0

Private String As String =「DSN = dsn; uid = user; pwd = pw!; Pooling = false」這仍將連接狀態保留爲服務器上的睡眠狀態 – Jeff 2011-04-19 22:18:11

+0

Const cn As String =「DSN = dsn; uid = user; pwd = pw; OLE DB Services = -4「 – Jeff 2011-04-19 22:39:16

+0

感謝您的幫助! – Jeff 2011-04-19 22:44:23

1

我沒有和你正在做什麼太多的經驗,但是這通常是我採取與SQLSERVER連接的路徑。 Using將自動關閉您的連接。

Using ADOconnect 
    'operations 
End Using 
+0

是的,但我可以想到的一個問題是,一旦readdata函數完成,並且結束使用已到達連接關閉。因此可以說,如果form1中的某處使用了returnadors函數,那麼連接會關閉,並且不會返回任何數據,只是出現錯誤 – Jeff 2011-04-19 22:02:02

+0

很確定它會重新打開它。 – Jack 2011-04-19 22:03:49

+0

讓我試試看看會發生什麼,生病讓你知道 – Jeff 2011-04-19 22:04:33