电竞比分网-中国电竞赛事及体育赛事平台

分享

VBA代碼引用ADO的連接(引擎)用法

 L羅樂 2018-01-03

       使用數(shù)據(jù)庫的優(yōu)勢與好處就不多講了。我們如何利用EXCEL的VBA代碼,有效地與SQL SERVER數(shù)據(jù)庫結合起來,實現(xiàn)菜鳥水平也可以達到高效利用數(shù)據(jù)庫呢?這關鍵的第一步就是,如果使EXCEL的VBA代碼,順利訪問SQL SERVER數(shù)據(jù)庫,然后就可以用普通的SQL語句讀寫數(shù)據(jù)庫中的數(shù)據(jù)了?,F(xiàn)在就我的編寫調試的實踐經(jīng)驗,談談我的個人體會。當然由于水平關系,存在表述錯誤也是在所難免的。

       在連接數(shù)據(jù)庫前,首先要在菜單中“工程”—“引用”中選擇Microsoft ActiveX Data Objects 2.6 Library 和Microsoft ActiveX Data Objects Recordset 2.6 Library這兩個組件。 運用ADO對象模型的主要元素:Connection(連接)中的ConnectionString屬性進行連接, ConnectionString為可讀寫string類型,指定一個連接字符串,告訴ADO 如何連接數(shù)據(jù)庫。關于ADO的前期綁定和后期綁定,我這里就不多說了(以下舉例皆以cnn為連接對像表述)。

       以下我們就以ConnectionString的寫法總結下可以很快掌握的連接方法:

       第一種數(shù)據(jù)庫引擎表達式的寫法:

 cnn.ConnectionString = 'Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用戶名;Password =密碼;Data Source=服務器名或IP地址;Initial Catalog=數(shù)據(jù)庫名;Connection Timeout=5;'

    上面的中文描述就是需要修改的地方,一般SQL SERVER的用戶名是sa,密碼就是在數(shù)據(jù)庫安裝時以sql server身份驗證時所設置的密碼,服務器名稱就是數(shù)據(jù)庫名稱,可以是ip地址,本機可以用127.0.0.1表示,局域網(wǎng)其他計算機可以用其ip地址填寫,然后改好數(shù)據(jù)庫的名稱,最后的Connection Timeout表示等待時間。一般只要端口號正常,局域網(wǎng)內計算機,應該在零點幾秒內就順利連接上了。

       如果上面這種方法連接不上,很可能你的服務器端口號設置不正常,除了修改服務器的端口號設置以外,我們還有第二種方法:

cnn.ConnectionString = 'Provider=SQL server native client 10.0;Server=服務器名或IP地址;Uid=用戶名;Pwd=密碼;Database=數(shù)據(jù)庫名;Connection Timeout=5;'

      這中間的文字描述就不重復了,參數(shù)的表達式略有區(qū)別,最大的區(qū)別就在于使用了不同的連接引擎Provider=SQL server native client 10.0,經(jīng)過測試,就算檢查不到端口號,也能連上服務器中的數(shù)據(jù)庫。

    現(xiàn)在說說第三種方法,建立無源數(shù)據(jù)庫連接:

conn.ConnectionString='driver={sql server};server=服務器名或IP地址;uid=用戶名;pwd=密碼;Database=數(shù)據(jù)庫名'

conn.ConnectionTimeout = 50

     這其中的唯一不同的地方也是數(shù)據(jù)庫引擎的改變driver={sql server},其他參數(shù)的引用與第二種方法相似。也是經(jīng)過測試能正常使用的字符串表達式。無源數(shù)據(jù)庫連接則不用配置ODBC環(huán)境,可以省去手工設置DSN的麻煩,這種方法所編寫的軟件適應性廣,又符合專業(yè)軟件的要求。

    當然,網(wǎng)上還有一種與此不同的方法,有源數(shù)據(jù)庫連接。有源連接就需要配置ODBC環(huán)境又要設置DSN,所以我也沒有哪個時間去測試了。好方法,有效的方法只要有一個就夠了。你說是不?做一個窗體,試著編寫一段代碼,就能順利測試了,附一段測試連接數(shù)據(jù)庫的代碼:

Public Sub ServerTest()

    Dim cnn As Object

    On Error GoTo Err1

    '建立與SQL Server數(shù)據(jù)庫服務器的連接

    Set cnn = CreateObject('ADODB.Connection')

    '建立無源數(shù)據(jù)庫連接

    cnn.ConnectionString = 'driver={sql server};server=127.0.0.1;uid=sa;pwd=6799;Database=管理系統(tǒng)2018'

    cnn.ConnectionTimeout = 50

    cnn.Open

    '判斷數(shù)據(jù)庫服務器連接是否成功

    If cnn.State = 1 Then MsgBox '連接ok啦……'

Err1:

    Set cnn = Nothing

End Sub

     

       最后我補充二個關于ADO連接ACCESS數(shù)據(jù)庫的連接引擎寫法:

cnn.provider='Microsoft.Jet.OLEDB.4.0'     '訪問2003版的用這個驅動

cnn.provider='Microsoft.ACE.OLEDB.12.0'  '訪問2007版以上的用這個驅動

cnn.open ';Data Source=C:\test.mdb;Jet OLEDB:Database Password='

      這其中的哪些應改為什么,哪些是參數(shù),相信你一看就能明白吧?如有表述不當?shù)牡胤?,也請高抬貴手海涵。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多