ADO的sql语句和ODBC的有什么区别

作者&投稿:师狱 (若有异议请与网页底部的电邮联系)
数据源和数据库/ODBC和ADO的区别~

ODBC和ADO的区别:
ODBC(Open Database Connection,开放式数据互连)是访问数据库的一个统一接口标准,它允许开发人员使用ODBC API(应用程序接口)来访问多种不同的数据源,并执行数据操作。
当使用应用程序时,应用程序首先通过使用ODBC API与驱动管理器进行通信,ODBC API由一组ODBC函数调用组成,通过API调用ODBC函数提交SQL请求,然后,驱动管理器通过分析ODBC函数并判断数据源的类型,并配置正确的 驱动器,并把ODBC函数调用传递给驱动器,最后,驱动器处理ODBC函数调用,把SQL请求发送给数据源,数据源执行相应操作后,驱动器返回执行结果, 管理器再把执行结果返回给应用程序。
微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。
ADO包含一些顶层的对象:

连接,代表到数据库的连接
记录集,代表数据库记录的一个集合
命令,代表一个SQL命令
记录,代表数据的一个集合
流,代表数据的顺序集合
错误,代表数据库访问中产生的意外
字段,代表一个数据库字段
参数,代表一个SQL参数
属性,保存对象的信息
ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者Visual Basic,甚至Delphi,微软的竞争对手Borland的一个产品,现在也支持使用ADO来访问数据库。

ODBC通常用来访问不具备OLE-DB特性的非Microsoft数据库中的数据;16位的ODBC驱动程序工作起来可能非常缓慢。

ODBC素以最慢的数据访问方法而著称,但是很可惜,当ADO或DAO都不支持某个数据库管理器而ODBC支持这个数据库管理器时,在这种特定的情形 下,你仍然需要使用ODBC。在大多数情况下,这意味着要从数据库厂商那里获得所需的驱动程序,虽然Visual C++确实附带了一些产品的驱动程序(如果你正在使用数据库管理器的某些神秘功能,那么就需要建立自己的接口枣这并不是一件十分困难的事)。本质上讲,你 总是要使用ODBC来访问Microsoft产品之外的其它DBMS产品所创建的数据库,这些数据库并不具备OLE-DB功能。ODBC还要求做一些额外 的工作枣为ADO调整Visual C++中的大部分向导。

高级技巧

除了使用ADO和ODBC外,你还可以使用像DAO(数据访问对象)这样的早期技术,该技术包含在像Access这样的Microsoft产品中。 DAO依赖于用Microsoft Access自动获得的Microsoft Jet数据库引擎。DAO还是较早版的Visual Basic所使用的引擎(最新版的Visual Basic和Visual C++依赖于相同的ADO/OLE-DB组合),所以如果需要支持较早的Visual Basic应用程序,那么DAO仍是一个不错的选择。

尽管Microsoft文件声明,可以用DAO访问非Microsoft产品建立的数据库,但你仍会发现,在这种情况下,使用ADO和ODBC要好得 多。这样的话,不但兼容性问题会少一些,速度也将有所提高,因为数据请求经过的接口层减少了。有一条经验要记住,DAO是设计用来处理MDB文件的。

ADO的一个问题是,它不支持远程通信。这是Microsoft提出RDO(远程数据对象)的原因之一。这种特别技术在Visual Basic应用程序中的使用,要比在Visual C++中的使用多得多,所以我猜想,你们中有很多人都在使用它。但是,记住RDO仍是一种生命力很强的技术,这一点很重要。ADO确实具有替代RDO的远 程数据服务(RDS)特征。换言之,ADO在一个软件包中提供了DAO和RDO两种功能性。

ODBC使用的是微软提供的通用数据库连接,所以效率不高,ADO就好些,主要是针对微软数据库做了优化,降低了系统资源的使用率,所以效率比ODBC要高一些,特别是并发用户多时更能体现速度上的差异。

odbc是32位数据源,是一种较为方便的数据库联接机制,它由于有内嵌的数据库引擎,也就是说,你即使没有相关数据库的库文件,有说是不知道如何自己建立数据库引擎,都可以方便的操作数据库。odbc提供了对大多数数据库的黑盒联接。
ado方式则需要你自己选择数据块引擎,自己建立连接,这样的方式是用户有一定数据库经验的人。

相比之下,odbc简单易用,支持大多数数据库,但是ado更加灵活。
另一方面,odbc不便于在不同操作系统上的迁移,如果你把你的程序刚到另外的机器上,你的程序需要重新建立新的odbc连接,虽然并不复杂。ado就不需要,只要你的数据库是可达的就可以使用。

最后,odbc由于经过独立数据源连接,其间会有一部分而外开销,这部分开销将使你的实际速度变慢一些,如果你做的程序对速度要求敏感,请考虑使用ado方式的。

打得累死了,还有不明白的,给我邮件。

ODBC和ADO区别、
ODBC(Open DataBase Connection)开放式系统互连,是一种数据库访问协议,提供了访问数据库的API接口。基于ODBC的应用程序,对数据库操作不依赖于具体的DBMS,不直接与DBMS打交道,所有数据库操作由对应DBMS的ODBC驱动程序完成,即:系统中不需要安装DBMS系统,如SQL SERVER 2005,但必须有SQL SERVER 2005的ODBC驱动程序,然后在ODBC管理器中注册数据源后,就可以在应用程序中通过ODBC API访问该数据库。
ODBC数据库访问技术只适用于windows系统,因为需要在ODBC驱动程序管理器中进行数据源注册,而只有windows才集成了ODBC驱动程序管理器(“控制面板/管理工具/数据源”)。
ADO(ActiveX Data Object)具有跨系统平台特性,它直接对DBMS数据库进行操作,即系
统中必须有DBMS,但不需要驱动程序,不需要注册数据源,所以具有很好的可移植性。
VC++6中这两种技术所涉及到的MFC类:
MFC ODBC类包括CDatabase类 CRecordSet类 CRecoreView类 CFieldExchange类 CDBException类,具体说明请详见任何一本讲述数据库编程技术的参考书。
ADO是data object,即数据对象的意思,先看一些它包括哪些常用对象:
Command对象 Connection对象 Error对象 RecordSet对象 Field对象 Parameter对象,对应到MFC ADO类,主要有_ConnectionPtr _RecordsetPtr等类。
基于ODBC和ADO的VC++应用程序设计概述
习惯上建立基于文档视图的应用程序时,使用ODBC访问方法,创建应用程序时,需要在step 2 of 6 what database support would you like to include中选择"database view with file support"加载你要访问的数据库,如果在此选择None,后期编程载入数据库相当麻烦,请注意。(如果一个数据库中有多个表,可在此选择一个表进行类定义,默认类名为"工程名+Set",可在应用程序创建完成前最后一步进行改名;然后在编程时建立其他基于CRecordSet的数据库表类)
如果在step 2中设置访问的数据库和表,则在生成的应用程序框架的XXSet类中会自动加载对数据库和表的连接访问操作,当然你最好重新进行定义;系统只有在必要时才会调用GetDefaultConnection和GetDefaultSQL返回缺省的数据库连接定义和SQL语句。
当然也可以建立基于对话框的数据库访问应用程序,思路差不多,请读者自行参悟。
习惯上当建立基于对话框的应用程序时,选择使用ADO技术。对于小程序,在StdAfx.h中引入ADO动态连接库,在C***APP中应初始化COM库环境,创建和关闭ADO连接。对于大型项目,通过自定义的ADOConnection类封装数据库操作的各种接口。


Delphi中怎样用ADO链接sqlserver?具体点
ConnectionString:='Provider=SQLOLEDB.1;'+ 'User ID=Sa;Password=;'+ 'Integrated Security=SSPI;'+ 'Persist Security Info=False;'+ 'Initial Catalog=数据库名称;'+ 'Data Source=服务器名称';然后再在窗体上放置ADO控件,并设置它的Connection属性指向 TADOConnection,这时就可以用ADO通过SQL语...

sql语句用什么语句
left join B on a.keyId =b.keyId2 and A.info = b.info2 go truncate table Adrop table A truncate table Bdrop table BSQL控制关键字:sql 脚本中常用的关键字还有 while for if else do while 等控制语句。SQL语句:综上所述SQL语句是由sql关键字和SQL对象名组合成sql代码。

delphi7编程SQL语句如何实现添加功能
qrystring;string;with ADOQuery1 do begin qrystring:='insert into table1 (ID,time,daxiao)VALUES ('+'''+'id1'+'''+','+'''+'2013-9-30 00:00:00'+'''+','+'''+floattostr(daxiao)+'''+')';ADOQuery1.Close;ADOQuery1.SQL.clear;ADOQuery1.SQL.Add(qrystring);try...

DOS中for %%i in (*.sql) do call CREATE_ALL_File.bat %%i 是什么意 ...
for %%i in (*.sql) do call CREATE_ALL_File.bat %%i ECHO SQL文件执行完成,请确认上面的执行结果。意思是:使用CREATE_ALL_File.bat文件对指定目录中的所有sql文件执行操作。SET FileName=%1 ECHO %1 SET CommandStrTB=%CommandStr%%FileName ECHO %CommandStrTB CommandStrTB 意思是:执行%...

mybatis源码分析02:执行sql语句
本文是mybatis源码分析的第三篇,我们来分析sql语句的执行流程。 在准备mybatis示例demo一文中,我们提供的测试主类如下:publicclassTest01{publicstaticvoidmain(String[]args)throwsException{\/\/配置文件路径Stringresource="org\/apache\/ibatis\/demo\/mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream...

Navicat设定mysql实时备份计划任务问题
do 开始该计划任务要做的事 begin -- do something 编写你的计划任务要做的事 INSERT aaa VALUES (3,'222');INSERT aaa VALUES (2,'222');-- 结束计划任务 end 将语句分割符设置回 ';'DELIMITER ;4、查询事件的运行状态 修改事件语法格式:[sql] view plain copy print?ALTER EVENT event_...

access数据库 vb中调用sql语言的语法问题 docmd.runsql,查询语句的语法...
dim strsql as string strsql= "select 日期,单号,金额 from 入库单 where 供应商 ='" & Forms![入库单]!供应商名称 & "' and 类别 = '" & Forms![入库单]!类别 & "' and year(入库日期) =#" & Format(DateAdd("m", -1, Now()), "yyyy\/mm") & "#"docmd.runsql strsql...

access的sql查询语句怎么写
方式一:在“查询”的试图里,可以使用Access的向导模式,也可以直接使用SQL语言模式,如下图:打开任何一个查询,在标签处选择SQL视图 就会变成以下SQL界面了:ACCESS还有一种方式,就是在其自带的VB里面,但是不能直接运行SQL语句,需要按照以下格式:DoCmd.RunSQL "SQL语句;" (注意:引号和分好不...

浅析PowerBuilder下动态SQL语句[1]
一 动态SQL语句的应用分析 PowerBuilder提供了四种格式的动态SQL语句 每种格式都有自己不同的特点和作用 (一)第一种格式 当执行没有输入参数并且没有返回结果集的SQL语句时可以使用这种格式 这种格式使用比较简单 其实现的操作也比较少 语法 EXECUTE IMMEDIATE SQLStatement{USING TransactionObject};其中...

Delphi 循环 ,急!谢谢!
adoquery1.Close;adoquery1.SQL.Clear;adoquery1.SQL.Add(sqlstr);adoquery1.ExecSQL;这部分语句实际上会造成Adoquery1里面没有任何记录,处于关闭状态,当然也就无法使用记录集操作adoquery1.Next了,解决的办法是在窗体上再添加一个adoquery2然后 adoquery1.First;while not adoquery1.Eof do begi...

绥芬河市19828184624: ADO的sql语句和ODBC的有什么区别 -
东方宙冠心: ODBC和ADO区别、 ODBC(Open DataBase Connection)开放式系统互连,是一种数据库访问协议,提供了访问数据库的API接口.基于ODBC的应用程序,对数据库操作不依赖于具体的DBMS,不直接与DBMS打交道,所有数据库操作由对应...

绥芬河市19828184624: ado 和 odbc有什么区别,分别是干什么的? -
东方宙冠心: 界面在VC里面做,需要建立exe工程,使用ado或者odbc建立都行,这两者是连接数据库的两种不同方法,ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有...

绥芬河市19828184624: ADO对象访问数据库的方法;ADO控件访问数据库的方法;ODBC访问数据库的方法
东方宙冠心: 数据库编程的思路都是一致的:打开数据库连接-》执行SQL语句-》获得查询结果-》关闭数据库连接,不同的数据库访问技术有不同的要求,比如用C API诘问MySql数据库的时候还得释放查询结果集. ODBC访问数据库得配置数据源 现在用VC...

绥芬河市19828184624: SQL与ODBC及ADO之间的关系是怎样的? -
东方宙冠心: 这个SQL、ODBC、ADO说起来有些话长,这里我简单说一下. 1、SQL它是一个标准的数据库查询语言,用于操纵数据库;但ODBC、ADO则是数据联接方式,就是通过什么方式或者说通过什么数据库组件来让你联接到数据库; 换句话说,...

绥芬河市19828184624: SQL,ADO,VBScript -
东方宙冠心: 1、SQL:一般是SQL语句,或者是指数据库MSSQL2、ADO:是操作数据库的ADO对象,里面集成了很多操作数据库的方法和函数3、VBScript:脚本语言,微软出品,现在用的人已经很少了,多数用JavaScript

绥芬河市19828184624: 数据源和数据库/ODBC和ADO的区别 -
东方宙冠心: ODBC和ADO的区别:ODBC(Open Database Connection,开放式数据互连)是访问数据库的一个统一接口标准,它允许开发人员使用ODBC API(应用程序接口)来访问多种不同的数据源,并执行数据操作.当使用应用程序时,应用程序首先...

绥芬河市19828184624: vba中的ado技术,要求sql语句,请问sql语句格式是什么? -
东方宙冠心: 这是采用拼字符串的方式写sql,所有要被拼进去的变量前后要加单引号,你可以在执行时打印出来,去数据库执行看看,没问题了,程序也就没问题了

绥芬河市19828184624: access中vba的ado访问数据库时ado中如何表示sql语句? -
东方宙冠心: 常用符号大体如下:&(连接号):为连接符,将控件内容和字符串连接起来.''(单引号):文本标示符,被包含在一对单引号之内的字符串即为文本型数据.##(井号):日期标示符,类似于文本标示符,被包含在井号内的即为日期型数据....

绥芬河市19828184624: ado,dao,odbc各自的优缺点是什么?现在哪个比较普遍,比较有前景? -
东方宙冠心: ADO来自ITwiki,开放的中文IT百科Jump to: navigation, 微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件.它提供了编程语言和统一数据访问方式OLE DB的一个中间层.允许开发人员编写访问数据的代码而不用...

绥芬河市19828184624: 数据库编程用ADO好,还是ODBC好? -
东方宙冠心: VC环境下推荐使用ADO,ADO采用COM接口,读取速度快,而且程序可移植,只要数据库的路径一致. ODBC效率也行吧,唯一的缺点就是连接前要在程序所在的电脑上重新配置一下数据源,也就是把你的程序拷贝到别人的电脑上,必须配置一下才能用,当然写代码也可以,但不如ADO方便.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网