access 中通過程序或ADO訪問sqlserver 數(shù)據(jù)庫的詳細教程
- 2004-09-18 23:07:00
- qkhsn-Office交流網(wǎng)
- 轉(zhuǎn)貼:
- Office中國
- 5083
前端軟件用access2000開髮,後颱數(shù)據(jù)庫用sqlserver2000
請教前端的access 程序如何通過代碼來訪問後颱sqlserver 數(shù)據(jù)
南香裡
使用ADO連接,然後就可以操作數(shù)據(jù),建議你下載一些源碼看。
搜索到相關(guān)文章,你看看
Access使用ADO訪問Sql Server數(shù)據(jù)的方法簡介
一、 什麼是ADO連接
用ADO設(shè)計程序都要使用連接對象,創(chuàng)建連接對象有點像打電話,打電話時首先要知道對方的有關(guān)信息如電話號碼,拔電話號碼的過程,就是在與對方建立電話通訊連接的過程。建立連接後就可以髮送或接收信息瞭,當斷開連接後,通訊就中斷。
ADO的連接過程大緻如此,就連接時得知道想要連接的數(shù)據(jù)源的一些基本信息。當然瞭要與OLEDB數(shù)據(jù)源連接的話,至少要知道一些具體提供者的信息,也就是連接到OLEDB數(shù)據(jù)源的一些數(shù)據(jù)標準,併在連接口對具體的提供者進行一些設(shè)置,使用OLEDB技術(shù)能夠?qū)崿F(xiàn)與各種各樣數(shù)據(jù)服務(wù)的連接,進行連接之後ADO的程序設(shè)計就獨立於提供者瞭,可以不用考慮具體廠商不衕數(shù)據(jù)格式的有關(guān)詳細信息,就可以使用ADO開髮應(yīng)用程序瞭。
二、 連接對象
在ADO程序設(shè)計模型中,要用連接對象在應(yīng)用程序與數(shù)據(jù)源之間建立一條通信線路。在ADO中可以簡單地使用兩箇聲明去建立連接。
第一箇聲明定義瞭一箇新的連接對象,併給連接對象一箇變量名稱。
Dim cnt as new adodb.connection
註意:ADODB前綴指齣連接對象是ADO連接。這樣使用前綴是爲瞭避免衕時使ADO 和DAO 時所造成的混亂。
New 可以理解爲”實例化”一箇新的對象,也就是對ADO中通用對象進行具體化爲一箇實例,併給牠一箇名稱,當然可實例化多箇實例給牠不衕的名稱,牠們各行其事,然後可以設(shè)置或使用對象中屬性、方法。當執(zhí)行上麵語句時,實際上是把ADO中的connection連接對象作爲一箇模闆,在內(nèi)存中創(chuàng)建一箇名稱爲CNT的adodb.connection對象的臨時拷貝。
上麵語句也可以寫成:
Dim cnt as adodb.connection
Set cnt=new adodb.connection
第二箇聲明用連接對象的open方法去實際建立與數(shù)據(jù)源的連接。連接的詳細信息顯示在字符連接串中。
Connectionname.open connectionstring
下麵是一箇創(chuàng)建與Access數(shù)據(jù)庫test.mdb連接的例子。
Dim Cnt as new adodb.connection
Cnt.OPen “data sourc=c:/test.mdb;provider=microsft.jet.oledb.4.0”
創(chuàng)建連接對象之後,就可用牠作爲一箇管道,用以髮送請求和接收已連接數(shù)據(jù)源中的數(shù)據(jù)。建立一箇連接就能夠髮齣一箇或多箇的數(shù)據(jù)請求。使用連接對象,還可以曏數(shù)據(jù)源中髮送一些指令,牠們執(zhí)行一些不返迴數(shù)據(jù)的操作,如更新數(shù)據(jù)或刪除數(shù)據(jù)。
ADO連接字符串,包含有與特定數(shù)據(jù)源連接所需的特定元素的名稱。盡管不衕數(shù)據(jù)源所需要的連接信息有諸多不衕之處,但是,連接字符串有一箇通用的結(jié)構(gòu),併且大多數(shù)字符串都包含有幾箇關(guān)鍵的元素。
連接字符串中最基本的單元稱之爲蔘數(shù)。蔘數(shù)有蔘數(shù)名,當然,爲瞭與特定的數(shù)據(jù)源連接,還必鬚賦於蔘數(shù)一箇的值。每箇蔘數(shù)都要符閤下麵顯示的通用格式。註意,在每箇蔘數(shù)後麵都要加一箇分號(; ) ,這樣,一箇連接字符串中就可包含多箇蔘數(shù)。
例如,所有的ADO 連接都要使用OLEDB提供者。在連接字符串中,Provider 蔘數(shù)具體指齣連接時應(yīng)該用哪一箇OLEDB提供者。下麵是連接時最常用的四箇蔘數(shù):
Provider 是OLEDB提供者的名稱,爲瞭與Jet、Sql Servers之類的數(shù)據(jù)源建立連接,就要使用Provider這箇蔘數(shù)。在編寫程序的計祘機上,要安裝OLEDB提供者軟件,在這箇軟件中定義提供者的名稱。名稱爲SQLOLEDB的提供者指的是Sql Server。
“provider=sqloledb;”
Data Source 這箇蔘數(shù)的值通常是網(wǎng)絡(luò)服務(wù)的名稱或者是文件的名稱。如果要與網(wǎng)絡(luò)服務(wù)數(shù)據(jù)源相連接,如SQL Server,那麼蔘數(shù)值就是服務(wù)(或服務(wù)器)的名稱。若數(shù)據(jù)源是基於文件的,如Access 或dBase ,那麼蔘數(shù)值是一箇完整的路徑名。
“Data Source=o:/test.mdb;”
這箇完整的路徑名可以惟一地確定一箇特定的文件。o:/test.mdb 指的是o 驅(qū)動器上根目録的test.mdb文件。記住,當用字母(如o)錶示網(wǎng)絡(luò)上的驅(qū)動器時,其他用戶也許沒有衕一驅(qū)動器映射;在另一颱計祘機上,o也許不是指衕一資源。爲瞭避免混淆,可以用計祘機名稱代替驅(qū)動器字符,如//computer。這樣,完整的路徑名就變爲//computer/test.mdb 。
User ID 這是用戶登録時的名稱,或者是用戶的名稱。爲瞭控製對數(shù)據(jù)資源的訪問,大多數(shù)網(wǎng)絡(luò)數(shù)據(jù)源繫統(tǒng)都有某種安全機製,讓用戶在登録時輸入密碼。基於文件的數(shù)據(jù)源也許疏忽瞭內(nèi)部的安全。例如,Access 有一種默認狀態(tài)下沒被激活的安全機製,隻有具體激活某一給定文件上的安全機製,這種安全機製纔會髮揮作用。但是,卽使在安全機製處於沒被激活狀態(tài),繫統(tǒng)也會自動産生用戶名Admin,併把牠作爲默認的登録名稱.”User ID=Admin;”
Password 這箇蔘數(shù)是一箇密碼,牠用於識彆用戶和允許訪問數(shù)據(jù)源。下麵的例子就是作爲連接字符串蔘數(shù)的密碼?!盤assword=123456;”,如果UserID 不要求使用Password蔘數(shù),那麼Password蔘數(shù)通常是空的。”Password=;”
完整的連接串是一箇塊文本,牠列齣瞭必需的蔘數(shù)和可選的蔘數(shù)。下麵例子是與名稱爲mySqlSvr的SQL server 相連接,用戶爲sa ,密碼爲123456 。在最後一箇蔘數(shù)後麵的分號是可有可無的,原因是牠齣現(xiàn)在連接串的最末端,後麵不再有其他的蔘數(shù)。
Cnt=“Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
註意,由於必鬚在一箇塊文本中包含所有的蔘數(shù),因而要用一對雙引號把連接字符串引起來連接串中的蔘數(shù)不分前後,併且由於每箇蔘數(shù)要分彆命名,因而可以按任意的次序編寫連接字符串。蔘數(shù)的次序可任意放置。一般隋況下,Povider 蔘數(shù)在第一位,但這併不是強製要求的
三、 打開一箇連接
可以用兩種方法打開一箇支持ADO數(shù)據(jù)源的連接。
1、設(shè)置Connectionstring屬性。每箇連接對象都有Connectionstring屬性。下麵的例子設(shè)置Connectionstring屬性,然後執(zhí)行連接對象的Open方法連接到數(shù)據(jù)源。如果連接成功,連接對象的State屬性就返迴數(shù)值1,否則就返迴數(shù)值0。
Sub opencnt()
Dim cnt as new connection
Cnt.connectionstring=“ Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
Cnt.open
Msgbox cnt.state
End sub
2、讀置connectionstring蔘數(shù)。把連接字符串文本作爲Open方法的蔘數(shù),可以減少一箇賦值語句,示例:
Sub opencnt2()
Dim cnt as new connection
Cnt.open connectionstring:=_
“ Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
Msgbox cnt.state
End sub
若能確保連接字符串成爲Open方法的第一箇蔘數(shù),還可以把蔘數(shù)名省略。
Cnt.open
“ Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
在應(yīng)用程序中通??梢园岩还w連接字符串用到許多地方,所以可以把連接字符串文本賦值給一箇變量,在模塊的部分賦值變量,可以在模塊的任何程序中使用,例如:
Const Cntstr=“ Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
Sub opencnt3()
Dim cnt as new connection
Cnt.open cntstr
Msgbox cnt.state
End sub
如果要使連接字符串在程序中的任何部分都可以使用,還可以把牠聲明爲公共變量,例如:
Public Const Cntstr=“ Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
四、 ADO與特定提供者的連接方法
ADO的連接對象雖然提供瞭衕一特性的連接方法,但是在與具體數(shù)據(jù)源連接時,要求連接字符的格式內(nèi)容要與數(shù)據(jù)提供者相匹配。
1、 ODBC數(shù)據(jù)源
對ODBC來説,OLEDB提供者稱爲MSDASQL(Microsoft Data Access SQL),使用這箇提供者ADO可以連接任意的ODBC數(shù)據(jù)源。
如果數(shù)據(jù)源的固有OLEDB提供者可用,那麼就把牠作爲提供者。
如果數(shù)據(jù)源的固有OLEDB提供者不可用,那麼就用MSDASQL作爲提供者。
1.1 使用ODBC DSN
ODBC繫統(tǒng)的使用依賴於DSN(數(shù)據(jù)源名稱),通過ODBC Manage可以創(chuàng)建DSN連接,創(chuàng)建連接後就可以把DSN作爲連接的一部分,用於創(chuàng)建ADO連接。
在使用ODBC DSN時,所用數(shù)據(jù)源類型驅(qū)動程序信息,存儲在ODBC.INI文件中,而不是顯示在連接字符串中。
一箇ODBC連接字符串有5箇蔘數(shù)。
Provider=MSDASQL 由於MSDASQL是ADO默認的OLEDB ODBC的提供者,所以不需要把Provider=MSDASQL這箇蔘數(shù)包含在連接字符串中。但明確聲明提供者的名稱,可以增加代碼的可讀性。再就是ADO的連接字符串需要Provider這箇蔘數(shù),而不是ODBC需要 Provider這箇蔘數(shù)。
DSN 這箇蔘數(shù)是ODBC連接字符串中唯一必鬚的蔘數(shù)。如果使用的是用戶DSN或繫統(tǒng)DSN這箇蔘數(shù)的值就是在ODBC Manager中已經(jīng)創(chuàng)建的DSN的名稱。
File DSN 當把DSN文件作爲ODBC DSN時,這箇蔘數(shù)就是DSN文件完整的路徑名。DSN文件可以存儲在任意的本地驅(qū)動器上和網(wǎng)絡(luò)驅(qū)動器上。
Database 這箇蔘數(shù)可有可無。如果Sql Server中有多箇數(shù)據(jù)庫,要具體指齣應(yīng)該打開Sql Server中的哪箇數(shù)據(jù)庫,可用這箇蔘數(shù)指明。如果忽略瞭這箇蔘數(shù),建立連接後將自動打開默認的數(shù)據(jù)庫。
UID/PWD 這箇是指用戶名和密碼。
例如用DSN實現(xiàn)與Sql Server的連接。在使用ODBC DSN時,所用數(shù)據(jù)源類型驅(qū)動程序信息,存儲在ODBC.INI文件中,而不是顯示在連接字符串中。
由於驅(qū)動信息沒有齣現(xiàn)在連接字符中,所以從連接中併不能區(qū)分齣數(shù)據(jù)源是ACCESS還是Sql Server或其他數(shù)據(jù)庫。
Sub dsntosqlserver()
Dim cnt as new adodb.connection
Cnt.open "DSN=SQLSVRTEST;UID=SA;PWD=123456 "
Msgbox cnt.state
End sub
雖然ODBC連接不要求具體指齣OLEDB提供者,但若想讓代碼清晰顯示建立的連接類型,可考慮把提供者的名稱包含在連接字符串中。
Cnt.open "Provider=MSDASQL;DSN=SQLSVRTEST;UID=SA;PWD=123456 "
當數(shù)據(jù)源包含多箇數(shù)據(jù)庫時,如Sql Server,則可用DATABASE蔘數(shù)具體指齣連接的是哪一箇數(shù)據(jù)庫。
Cnt.open "Provider=MSDASQL;DSN=SQLSVRTEST;UID=SA;PWD=123456;database=cwbase1 "
使用File DSN時,則可把File DSN蔘數(shù)包含在連接字符串中,這箇蔘數(shù)的值要求中File DSN文件的完整路徑名。
使用ODBC DSN方法建立連接的一些問題:
驅(qū)動程序名稱沒有包含在連接字符中,造成所用數(shù)據(jù)源的種類不清楚。
比較繁瑣,牠要求必鬚在每一箇使用應(yīng)用程序的桌麵是創(chuàng)建DSN,或每箇桌麵必鬚能訪問網(wǎng)絡(luò)共享驅(qū)動器上的FILE DSN。
1.2不用DSN建立與ODBC數(shù)據(jù)源的連接
通過創(chuàng)建不依賴DSN的ODBC連接字符串上述問題,要想不用DSN隻鬚把原來存儲在DSN中的信息包含在連接字符串中就可以瞭。
例如:用ODBC連接字符串連接Access的MDB數(shù)據(jù)庫,連接字符串中包含一箇DRIVER蔘數(shù)和一箇數(shù)據(jù)庫蔘數(shù)DBQ,也就是把原來存儲在DSN中的信息都包含在連接字符串中瞭,所以不用DSN也可以建立連接。
Sub nodsn()
Dim cnt as new adodb.connection
Cnt.open "DRIVER=Microsoft access driver ( *.mdb);" &_
"DBQ=c:/test.mdb"
Msgbox Cnt.state
End sub
如果想要知道ODBC驅(qū)動程序的準確名稱,,可以通過ODBC管理器把要使用的數(shù)據(jù)源創(chuàng)建一箇文件型的DSN,然後用NOTEPAD打開DSN文件,把蔘數(shù)複製、粘貼到代碼中就可以瞭。
雖然ADO有專門爲Sql Server提供的OLEDB提供者,但也可使用的ODBC連接到Sql Server,而牠當初是專門爲DAO設(shè)計的。
Sub ODBCSQL()
Dim cnt as new adodb.connection
Cnt.open "DRIVER={SQL SERVER};SERVER=127.0.0.1;DATABASE=CWBASE1;" &_
"UID=sa;PWS=123456"
Msgbox Cnt.state
End sub
由於可以把所必需的信息包含在程序代碼中,對於需要與ODBC數(shù)據(jù)源相連接的應(yīng)用程序來説,使用無DSN連接就使應(yīng)用程序的維護和分髮更爲簡單。
2、 Microsoft Jet 數(shù)據(jù)源
連接字符串蔘數(shù)Provider 設(shè)置爲:Microsoft.Jet.OLEDB.4.0
此提供者的典型連接字符串是:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword;"
該字符串包含下列關(guān)鍵字:
關(guān)鍵字
|
説明
|
Provider
|
指定 OLE DB Provider for Microsoft Jet。
|
Data Source
|
指定數(shù)據(jù)庫路徑和文件名(例如,c:/Northwind.mdb)。
|
User ID
|
指定用戶名稱。如果未指定此關(guān)鍵字,則默認使用字符串 "admin"。
|
Password
|
指定用戶密碼。如果未指定此關(guān)鍵字,則默認使用空字符串 ("")。
|
Jet Engine 4.0 作爲提供者與Access數(shù)據(jù)庫文件連接。
Sub jetoledb1()
Dim cnt as new adodb.connection
Cnt.open "Provider=Microsoft.jet.oledb.4.0;data source=c:/test.mdb;"
Msgbox Cnt.state
End sub
Jet Engine 4.0 作爲提供者與含有數(shù)據(jù)庫信息有EXCEL電子錶格文件連接。也可根據(jù)excel電子錶格所固有的特性,使用一些蔘數(shù), 可以更具體地定義使用電子錶格中的數(shù)據(jù)。
TABLE=sheets1$ 指明電子錶格中的哪箇工作錶。
HDR=Yes 指齣包含工作錶中的第一行字段名,NO就是不包含第一行字段名。
Sub jetxls()
Dim cnt as new adodb.connection
Cnt.open "Provider=Microsoft.jet.oledb.4.0;Excel 8.0;database=c:/test.xls;" &_
"HDR=YES;TABLE=sheets1$"
Msgbox Cnt.state
End sub
Jet Engine 4.0 作爲提供者與文本文件(CSV)的連接。
Sub jetTEXT()
Dim cnt as new adodb.connection
Cnt.open "Provider=Microsoft.jet.oledb.4.0;Text;FMT=Delimited;HDR=NO;" &_
"DATABASE=C:/;TABLE=TEST.TXT"
Msgbox Cnt.state
End sub
Jet Engine 4.0 作爲提供者與DBASE DBF數(shù)據(jù)文件的連接。
Sub jetdbf()
Dim cnt as new adodb.connection
Cnt.open "Provider=Microsoft.jet.oledb.4.0;dbase 5.0;HDR=NO;" &_
"DATABASE=C:/;TABLE=TEST.dbf"
Msgbox Cnt.state
End sub
電子錶格、文本文件、DBF等數(shù)據(jù)源都是單獨的文件,併且都是非關(guān)繫型數(shù)據(jù)庫。在這種非型數(shù)據(jù)源中,每箇錶都是單獨的一箇文件。爲瞭讓這箇單獨文件適閤關(guān)繫模型,就把包含單獨單獨文件的文件夾具體指明爲數(shù)據(jù)庫(虛構(gòu)的數(shù)據(jù)庫)。這樣虛構(gòu)的數(shù)據(jù)庫可以讓這種非關(guān)繫型數(shù)據(jù)源適閤於ODBC模型。
3、 Sql Server 數(shù)據(jù)源
本文前麵已經(jīng)提到,ADO使用ODBC驅(qū)動程序可以建立與Sql Server數(shù)據(jù)庫的連接。但是最好的方法是用OLEDB Provider for Sql Server直接建立連接。
OLEDB Provider for Sql Server的提供者是:
"Provider=SQLOLEDB" 或"Provider=SQLOLEDB.1" 末尾的數(shù)字代錶的版本號。
Sub sqlsrv()
Dim cnt as new adodb.connection
Dim cntstr as string
Cntstr="provider=SQLOLEDB;" &_
"data source=cwserver;" &_ ‘服務(wù)器名或IP或是本地服務(wù)寫(LOCAL),也可寫成127.0.0.1
"initial catalog=cwbase1" ‘要連接的數(shù)據(jù)庫
"user id=sa;password=123456"
Msgbox cnt.state
End sub
註意:OLEDB對連接字符串中的蔘數(shù)非常敏感。OLEDB蔘數(shù)名data sourcd和user id在書寫時必鬚用空格隔開。
ADO的連接字符串也可以選擇使用ODBC風(fēng)格的蔘數(shù)名,在連接字符串中可以用SERVER代替DATA SOURCE,用DATABASE代替initial catlog,用UID代替USER ID,用PWS代替PASSWORD。
Sub sqlsrv()
Dim cnt as new adodb.connection
Dim cntstr as string
Cntstr="provider=SQLOLEDB;" &_
"SERVER=cwserver;" &_ ‘服務(wù)器名或IP或是本地服務(wù)寫(LOCAL),也可寫成127.0.0.1
"DATABASE=cwbase1" ‘要連接的數(shù)據(jù)庫
"UID=sa;PWD=123456"
Msgbox cnt.state
End sub
(ADO_RDO-相關(guān)文章技巧鏈接):
直接穫?cè)ccess、SQL Server等數(shù)據(jù)庫數(shù)據(jù)
分享
Access數(shù)據(jù)庫自身
- office課程播放地址及課程明細
- Excel Word PPT Access VBA等Office技巧學(xué)習(xí)平颱
- 將( .accdb) 文件格式數(shù)據(jù)庫轉(zhuǎn)換爲早期版本(.mdb)的文件格式
- 將早期的數(shù)據(jù)庫文件格式(.mdb)轉(zhuǎn)換爲 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數(shù)據(jù)庫引擎和訪問連接引擎以阻止對遠程數(shù)據(jù)庫的訪問(remote table)
- Access 365 /Access 2019 數(shù)據(jù)庫中哪些函數(shù)功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
Access Activex第三方控件
- Activex控件或Dll 在某些電腦無法正常註冊的解決辦法(regsvr32註冊時卡住)
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下齣現(xiàn)橫曏滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節(jié)點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調(diào)用WebService(直接Post方式)併解析返迴的XML
Access ADP Sql Server等
- 早期PB程序連接Sqlserver齣現(xiàn)錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區(qū)彆
- Roych的淺談數(shù)據(jù)庫開髮繫列(Sql Server)
- sqlserver 自動備份對備份目録沒有存取權(quán)限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業(yè)管理器 SQLServer2005_SSMSEE
文章分類
聯(lián)繫我們
聯(lián)繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |