連接數(shù)據(jù)庫 如果采用的 ADO.NET 進行連接,默認情況下會有一個你看不見的 連接池 來管理這些連接,然后 你每次程序里的關(guān)閉數(shù)據(jù)庫,只是把連接放回連接池,方便下次重新連接。
創(chuàng)新互聯(lián)于2013年成立,先為新干等服務(wù)建站,新干等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為新干企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
所以不用就關(guān),避免連接池連接數(shù)過多。
我 看了一下應(yīng)該是你第一次連接上后,cnn.open就打開并持續(xù)開著,并沒有關(guān)閉,所以,你斷網(wǎng)后,第二次連接,他依然是打開的。
另外:
我個人建議你要學(xué)會用vb.net的組件,自己連太麻煩,他有現(xiàn)成的,你直接在數(shù)據(jù)庫里選擇添加新數(shù)據(jù)源,按照提示把數(shù)據(jù)庫添加上,然后,你會看到你的程序下面會多了個數(shù)據(jù)集(dataset).
最后要做的就是使用這些數(shù)據(jù)集了。以form1為例,你添加一個datagridview,然后在他的數(shù)據(jù)源上選擇剛才添加的項數(shù)據(jù)集中的某個數(shù)據(jù)表,然后你會看到,在form1中多了一個dataadapter,sqlconn,datset,并且在form1的load事件中,你會發(fā)現(xiàn)多了一條語句,dataadapet.fill(dataset)。
當(dāng)你運行程序并更改了datagridview后,想要更新數(shù)據(jù),只需要在后面,增加一個button,并設(shè)置他的click事件為:dataadapter.update(dataset)
怎么樣,是不是還有一個問題想問?就是如何更改數(shù)據(jù)源,很簡單,在form1的load事件中,dataadapter.fill(dataset)這條語句之前,再增加一條,sqlconn.ConnectionString = "server=**;database=**;uid=**;pwd=**;Connect TimeOut=2"這個就是你的數(shù)據(jù)源。
希望我的答案能令你滿意。
感覺很可能是只有打開沒有關(guān)閉或釋放資源的操作,所以內(nèi)存不夠用了
需要把你的代碼貼出來分分析
使用ADO控件可以方便的在VB6中訪問ODBC數(shù)據(jù)庫,但是通過直接放置ADODS控件來獲得ADO的數(shù)據(jù)連接比較麻煩,我們可以在VB工程中創(chuàng)建一個公共數(shù)據(jù)模塊,將ADO控件的初始化、建立連接、關(guān)閉連接等操作都寫到函數(shù)中,這樣就可以在工程的其他模塊中共享調(diào)用這個ADO連接。
一次完整的ADO調(diào)用操作分為如下幾個步驟:
打開ADO到數(shù)據(jù)庫的連接,初始化ADO RECORDSET集。
通過寫入SQL語句執(zhí)行查詢并返回查詢結(jié)果RECORDSET集;或者可以通過寫入SQL語句執(zhí)行相應(yīng)數(shù)據(jù)庫操作。
釋放RECORDSET集,關(guān)閉數(shù)據(jù)庫連接。
需要注意的是,每個動態(tài)創(chuàng)建的ADO同時只能被一個過程調(diào)用,如果需要進行多表并行操作,可能需要在公共數(shù)據(jù)模塊中建立多個動態(tài)ADO。
下面是相關(guān)的代碼:
'-----------------------------------------------------------------
'如下代碼保存在名為my.bas的工程模塊中
Public CONN As Adodb.Connection '定義ADO CONNECTION對象
Public RS As Adodb.Recordset '定義ADO RECORDSET對象
'****************************
'打開數(shù)據(jù)庫連接
'****************************
Function ConnOpen()
Dim ASTR As String
Set CONN = New Adodb.Connection
ASTR = GetDatabasePath 'MDB文件數(shù)據(jù)庫路徑
CONN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" ASTR ";Persist Security Info=False"
'本例的ODBC連接為JET4.0的直接到MDB文件的連接,如果使用ODBC數(shù)據(jù)源可以使用如下CONNECTION串:
'Provider=MSDASQL.1;Password="";Persist Security Info=True;Data Source=數(shù)據(jù)源名稱;Initial Catalog=數(shù)據(jù)表庫名稱
你是關(guān)閉本地的,又沒有立即關(guān)閉遠程Server上的,他是個pip協(xié)議對等試的連接,打個比方,兩個電腦要共享一個文件夾,不能說直接用一臺電腦配好就可以看吧,要設(shè)置共享協(xié)議。
這邊釋放關(guān)閉連接不代表就更新了另一臺電腦,他還是在判斷有無連接響應(yīng),這就是為什么連接多了會形成“死鎖”。