安徽彩票大奖 欧洲百万乐透大奖 七星彩17049规律大奖 双色球中大奖领奖过程 3d近期中大奖故事 广州番禺中福彩大奖的 鸡男注定会中大奖 2016江苏彩民中大奖 趣彩网大奖网黑平台 大乐透4.97亿大奖 霍邱一彩民6元中双色球547万大奖 双色球黑龙江中大奖图 体育彩票中大奖名单 什么样的人能中大奖 彩票大奖作假

access 中通过程序或ADO访问sqlserver 数据库的详细教程

2004-09-18 23:07:00
qkhsn-Office交流网
转贴:
Office中国
1382

前端软件用access2000开发,后台数据库用sqlserver2000
请教前端的access 程序如何通过代码来访问后台sqlserver 数据

南香里
使用ADO连接,然后就可以操作数据,建议你下载一些源码看。


搜索到相关文章,你看看

Access使用ADO访问Sql Server数据的方法简介



一、 什么是ADO连接
用ADO设计程序?#23478;?#20351;用连接对象,创建连接对象有点像打电话,打电话时首先要知道对方的有关信息如电话号码,拔电话号码的过程,就是在与对方建立电话通?#35835;?#25509;的过程。建立连接后就可以发送或接收信息了,当断开连接后,通讯就中断。
ADO的连接过程大致如此,就连接时得知道想要连接的数据源的一些基本信息。当然了要与OLEDB数据源连接的话,至少要知道一些具体提供者的信息,也就是连?#25317;絆LEDB数据源的一些数据标准,并在连接口对具体的提供者进行一些设置,使用OLEDB技术能够实现与各种各样数据服务的连接,进行连接之后ADO的程序设计就独立于提供者了,可以不用考虑具体厂商不同数据格式的有关详细信息,就可以使用ADO开发应用程序了。
二、 连接对象
在ADO程序设计模型中,要用连接对象在应用程序与数据源之间建立一条通信线路。在ADO中可以简单地使用两个声明去建立连接。
第一个声明定义了一个新的连接对象,并给连接对象一个变量名称。
Dim cnt as new adodb.connection
注意:ADODB前缀指出连接对象是ADO连接。这样使用前缀是为了避免同时使ADO 和DAO 时所造成的混乱。
New 可以理解为”实例化”一个新的对象,也就是对ADO中通用对象进行具体化为一个实例,并给它一个名称,当然可实例化多个实例给它不同的名称,它们各行其事,然后可以设置或使用对象中属性、方法。当执行上面语句时,实际上是把ADO中的connection连接对象作为一个模板,在内存中创建一个名称为CNT的adodb.connection对象的临时拷贝。
上面语句也可以写成:
Dim cnt as adodb.connection
Set cnt=new adodb.connection
第二个声明用连接对象的open方法去实际建立与数据源的连接。连接的详细信息显示在?#22336;?#36830;接串中。
Connectionname.open connectionstring
下面是一个创建与Access数据库test.mdb连接的例子。
Dim Cnt as new adodb.connection
Cnt.OPen “data sourc=c:/test.mdb;provider=microsft.jet.oledb.4.0”
创建连接对象之后,就可用它作为一个管道,用以发送请求和接收已连接数据源中的数据。建立一个连接就能够发出一个或多个的数据请求。使用连接对象,还可以向数据源中发送一些指令,它们执行一些不返回数据的操作,如更新数据或删除数据。
       ADO连接?#22336;?#20018;,包含有与特定数据源连接所需的特定元素的名称。尽管不同数据源所需要的连?#26377;?#24687;有诸多不同之处,但是,连接?#22336;?#20018;有一个通用的结构,并且大多数?#22336;?#20018;?#21450;?#21547;有?#29238;?#20851;键的元素。
连接?#22336;?#20018;中最基本的单元称之为?#38382;2问?#26377;?#38382;?#21517;,当然,为了与特定的数据源连接,还必须赋于?#38382;?#19968;个的值。每个?#38382;家?#31526;合下面显示的通用格式。注意,在每个?#38382;?#21518;面?#23478;?#21152;一个分号(; ) ,这样,一个连接?#22336;?#20018;中就可包含多个?#38382;?/div>
例如,所有的ADO 连接?#23478;?#20351;用OLEDB提供者。在连接?#22336;?#20018;中,Provider ?#38382;?#20855;体指出连接时应该用哪一个OLEDB提供者。下面是连接时最常用的四个?#38382;?/div>
Provider 是OLEDB提供者的名称,为了与Jet、Sql Servers之类的数据源建立连接,就要使用Provider这个?#38382;?#22312;编写程序的计算机上,要安装OLEDB提供者软件,在这个软件中定义提供者的名称。名称为SQLOLEDB的提供者指的是Sql Server。
“provider=sqloledb;”
Data Source 这个?#38382;?#30340;值通常是网络服务的名称或者是文件的名称。如果要与网络服务数据源相连接,如SQL Server,那么?#38382;?#20540;就是服务(或服务器)的名称。若数据源是基于文件的,如Access 或dBase ,那么?#38382;?#20540;是一个完整的路径名。
“Data Source=o:/test.mdb;”
这个完整的路径名可以惟一地确定一个特定的文件。o:/test.mdb 指的是o 驱动器?#32454;?#30446;录的test.mdb文件。记住,当用字母(如o)表示网络上的驱动器时,其他用户也许没有同一驱动器?#25104;洌?#22312;另一台计算机上,o也许不是指同一资源。为了避免混淆,可以用计算机名称代替驱动器?#22336;?#22914;//computer。这样,完整的路径名就变为//computer/test.mdb 。
User ID 这是用户登录时的名称,或者是用户的名称。为了控制对数据资源的访问,大多数网络数据源系统都有某种安全机制,让用户在登录时输入密码。基于文件的数据源也许疏忽了内部的安全。例如,Access 有一种默认状态下没被激活的安全机制,只有具体激活某一给定文件上的安全机制,这种安全机制才会发挥作用。但是,即使在安全机制处于没被激活状态,系统也会自动产生用户名Admin,并把它作为默认的登录名称.”User ID=Admin;”
Password 这个?#38382;?#26159;一个密码,它用于识别用户和允许访问数据源。下面的例子就是作为连接?#22336;?#20018;?#38382;?#30340;密码。”Password=123456;”,如果UserID 不要求使用Password?#38382;?#37027;么Password?#38382;?#36890;常是空的。”Password=;”
完整的连接串是一个块文本,它列出了必需的?#38382;?#21644;可选的?#38382;?#19979;面例子是与名称为mySqlSvr的SQL server 相连接,用户为sa ,密码为123456 。在最后一个?#38382;?#21518;面的分号是可有可无的,原因是它出现在连接串的最末端,后面不再有其他的?#38382;?/div>
Cnt=“Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
注意,由于必须在一个块文本中包含所有的?#38382;?#22240;而要用一对双引号把连接?#22336;?#20018;引起来连接串中的?#38382;?#19981;分前后,并且由于每个?#38382;?#35201;分别命名,因而可以按?#25105;?#30340;次序编写连接?#22336;?#20018;。?#38382;?#30340;次序可?#25105;?#25918;置。一般隋况下,Povider ?#38382;?#22312;第一位,但这并不是强制要求的
三、 打开一个连接
可以用两?#22336;?#27861;打开一个支持ADO数据源的连接。
1、设置Connectionstring属性。每个连接对象都有Connectionstring属性。下面的例子设置Connectionstring属性,然后执行连接对象的Open方法连?#25317;?#25968;据源。如果连接成功,连接对象的State属性就返回数值1,否则就返回数值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?#38382;?#25226;连接?#22336;?#20018;文本作为Open方法的?#38382;?#21487;以减少一个赋值语句,示例:
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
若能?#32321;?#36830;接?#22336;?#20018;成为Open方法的第一个?#38382;?#36824;可以把?#38382;?#21517;省略。
Cnt.open
“ Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
在应用程序中通常可以把一个连接?#22336;?#20018;用到许多地方,所以可以把连接?#22336;?#20018;文本赋值给一个变量,在模块的部?#25351;持当?#37327;,可以在模块的任何程序中使用,例如:
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
如果要使连接?#22336;?#20018;在程序中的任何部分都可以使用,还可以把它声明为公共变量,例如:
Public Const Cntstr=“ Provider=SQLOLEDB;User ID=sa;password=123456;data source=mysqlsvr;”
四、 ADO与特定提供者的连接方法
ADO的连接对象虽然提供?#36865;?#19968;特性的连接方法,但是在与具体数据源连接时,要求连接?#22336;?#30340;格式内容要与数据提供者相匹配。
1、 ODBC数据源
对ODBC来说,OLEDB提供者称为MSDASQL(Microsoft Data Access SQL),使用这个提供者ADO可以连接?#25105;?#30340;ODBC数据源。
如果数据源的固有OLEDB提供者可用,那么就把它作为提供者。
如果数据源的固有OLEDB提供者不可用,那么就用MSDASQL作为提供者。
1.1 使用ODBC DSN
ODBC系统的使用依赖于DSN(数据源名称),通过ODBC Manage可?#28304;?#24314;DSN连接,创建连接后就可以把DSN作为连接的一部分,用于创建ADO连接。
在使用ODBC DSN时,所用数据源类型驱动程序信息,存储在ODBC.INI文件中,而不是显示在连接?#22336;?#20018;中。
一个ODBC连接?#22336;?#20018;有5个?#38382;?/div>
Provider=MSDASQL 由于MSDASQL是ADO默认的OLEDB ODBC的提供者,所以不需要把Provider=MSDASQL这个?#38382;?#21253;含在连接?#22336;?#20018;中。但明确声明提供者的名称,可以增加代码的可?#21015;浴?#20877;就是ADO的连接?#22336;?#20018;需要Provider这个?#38382;?#32780;不是ODBC需要 Provider这个?#38382;?/div>
DSN 这个?#38382;?#26159;ODBC连接?#22336;?#20018;中唯一必须的?#38382;?#22914;果使用的是用户DSN或系统DSN这个?#38382;?#30340;值就是在ODBC Manager中已经创建的DSN的名称。
File DSN 当把DSN文件作为ODBC DSN时,这个?#38382;?#23601;是DSN文件完整的路径名。DSN文件可?#28304;?#20648;在?#25105;?#30340;本地驱动器上和网络驱动器上。
Database 这个?#38382;?#21487;有可无。如果Sql Server中有多个数据库,要具体指出应?#20040;?#24320;Sql Server中的哪个数据库,可用这个?#38382;?#25351;明。如果忽略了这个?#38382;?#24314;立连接后将自动打开默认的数据库。
UID/PWD 这个是指用户名和密码。
例如用DSN实现与Sql Server的连接。在使用ODBC DSN时,所用数据源类型驱动程序信息,存储在ODBC.INI文件中,而不是显示在连接?#22336;?#20018;中。
由于驱动信息没有出现在连接?#22336;?#20013;,所?#28304;?#36830;接中并不能区分出数据源是ACCESS还是Sql Server或其他数据库。
Sub dsntosqlserver()
Dim cnt as new adodb.connection
Cnt.open "DSN=SQLSVRTEST;UID=SA;PWD=123456 "
Msgbox cnt.state
End sub
虽然ODBC连接不要求具体指出OLEDB提供者,但若想让代码清晰显示建立的连接类型,可考?#21069;?#25552;供者的名称包含在连接?#22336;?#20018;中。
Cnt.open "Provider=MSDASQL;DSN=SQLSVRTEST;UID=SA;PWD=123456 "
当数据源包含多个数据库时,如Sql Server,则可用DATABASE?#38382;?#20855;体指出连接的是哪一个数据库。
Cnt.open "Provider=MSDASQL;DSN=SQLSVRTEST;UID=SA;PWD=123456;database=cwbase1 "
使用File DSN时,则可把File DSN?#38382;?#21253;含在连接?#22336;?#20018;中,这个?#38382;?#30340;值要求中File DSN文件的完整路径名。
使用ODBC DSN方法建立连接的一些问题:
    驱动程序名称没有包含在连接?#22336;?#20013;,造成所用数据源的种类不清楚。
    比较繁琐,它要求必须在每一个使用应用程序的桌面是创建DSN,或每个桌面必须能访问网络共享驱动器上的FILE DSN。
1.2不用DSN建立与ODBC数据源的连接
通过创建不依赖DSN的ODBC连接?#22336;?#20018;上述问题,要想不用DSN只须把原来存储在DSN中的信息包含在连接?#22336;?#20018;中就可以了。
例如:用ODBC连接?#22336;?#20018;连接Access的MDB数据库,连接?#22336;?#20018;中包含一个DRIVER?#38382;?#21644;一个数据库?#38382;鼶BQ,也就是把原来存储在DSN中的信息?#21450;?#21547;在连接?#22336;?#20018;中了,所以不用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驱动程序的准?#35775;?#31216;,,可以通过ODBC管理器把要使用的数据源创建一个文件型的DSN,然后用NOTEPAD打开DSN文件,把?#38382;?#22797;制、?#31243;?#21040;代码中就可以了。
虽然ADO有专门为Sql Server提供的OLEDB提供者,但也可使用的ODBC连?#25317;絊ql Server,而它当初是专门为DAO设计的。
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数据源相连接的应用程序来说,使用无DSN连接就使应用程序的维护和分发更为简单。
2、 Microsoft Jet 数据源
连接?#22336;?#20018;?#38382;?em>Provider 设置为:Microsoft.Jet.OLEDB.4.0
此提供者的典型连接?#22336;?#20018;是:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword;"
该?#22336;?#20018;包含下列关键字:
关键字
?#24471;?/span>
Provider
指定 OLE DB Provider for Microsoft Jet
Data Source
指定数据库路径和文件名(例如,c:/Northwind.mdb)。
User ID
指定用户名称。如果未指定此关键字,则默认使用?#22336;?#20018; "admin"
Password
指定用户密码。如果未指定此关键字,则默认使用空?#22336;?#20018; ("")
Jet Engine 4.0 作为提供者与Access数据库文件连接。
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 作为提供者与含有数据库信息有EXCEL电子表格文件连接。也可根据excel电子表格所固有的特性,使用一些?#38382;?可以更具体地定义使用电子表格中的数据。
TABLE=sheets1$ 指明电子表格中的哪个工作表。
HDR=Yes 指出包含工作表中的第一行字段名,NO就是?#35805;?#21547;第一行字段名。
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数据文件的连接。
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等数据源都是单独的文件,并且都是非关系型数据库。在这?#22336;?#22411;数据源中,每个表都是单独的一个文件。为了让这个单独文件适合关?#30340;?#22411;,就把包含单独单独文件的文件夹具体指明为数据库(虚构的数据库)。这样虚构的数据库可以让这?#22336;?#20851;系型数据源适合于ODBC模型。
3、 Sql Server 数据源
本文前面已经提到,ADO使用ODBC驱动程序可以建立与Sql Server数据库的连接。但是最好的方法是用OLEDB Provider for Sql Server直接建立连接。
OLEDB Provider for Sql Server的提供者是:
"Provider=SQLOLEDB" 或"Provider=SQLOLEDB.1" 末尾的数字代表的版本号。
Sub sqlsrv()
Dim cnt as new adodb.connection
Dim cntstr as string
Cntstr="provider=SQLOLEDB;" &_
       "data source=cwserver;" &_ ‘服务器名或IP或是本地服务写(LOCAL),也可写成127.0.0.1
        "initial catalog=cwbase1" ‘要连接的数据库
"user id=sa;password=123456"
Msgbox cnt.state
End sub
注意:OLEDB对连接?#22336;?#20018;中的?#38382;?#38750;常敏感。OLEDB?#38382;?#21517;data sourcd和user id在书写时必须用空格隔开。
ADO的连接?#22336;?#20018;也可以选择使用ODBC风格的?#38382;?#21517;,在连接?#22336;?#20018;中可以用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;" &_ ‘服务器名或IP或是本地服务写(LOCAL),也可写成127.0.0.1
        "DATABASE=cwbase1" ‘要连接的数据库
"UID=sa;PWD=123456"
Msgbox cnt.state
End sub



(ADO_RDO-相关文章技巧链接):
直接获取access、SQL Server等数据库数据

分享
? 1999-2019 Office交流网?? 中山市天鸣科技发展有限公司 粤ICP备10043721号-5 SQL查询:19
内存占用:8.00MB
PHP 执行时间:0.15
双色球大奖2000年
安徽彩票大奖 欧洲百万乐透大奖 七星彩17049规律大奖 双色球中大奖领奖过程 3d近期中大奖故事 广州番禺中福彩大奖的 鸡男注定会中大奖 2016江苏彩民中大奖 趣彩网大奖网黑平台 大乐透4.97亿大奖 霍邱一彩民6元中双色球547万大奖 双色球黑龙江中大奖图 体育彩票中大奖名单 什么样的人能中大奖 彩票大奖作假