看看大家最常使用的数据访问技术是什么

fslyw 2003-05-19 09:57:39
ado 2.x
ado.net
dbExpress
其他
见识有限,只能列出这些。欢迎大家发表意见 :)
...全文
100 点赞 收藏 24
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tigerwen01 2003-05-27
出处 http://www.sina.com.cn 2000/04/06 16:20 互联网世界

  一、引言

  随着Internet/Intranet的讯速发展,WEB得到了越来越广泛的应用,WWW页面已由静态网页逐渐发展为动态的交互式网页,如何更好地实现与用户的交互就成为非常迫切的问题。解决这一问题的方法之一就是实现数据库与Internet/Intranet应用软件的集成。基于WEB的数据库应用,就是将数据库和WEB技术结合,按照Browser/Server结构建立的通过浏览器访问数据库的服务系统。目前建立与web数据库交互连接的方法有主要如下几种:一是网关接口CGI和NSAPI、ISAPI;二是JDBC(JAVA DATABASE CONNE CTIVITY);三是ACTIVEX。

  二、CGI和NSAPI、ISAPI

  CGI是一种在服务器与外部脚本或程序之间进行交互的方法,它通过从Web服务器上接收信息,创建一个子过程以便为CGI进行脚本处理或存储从服务器上接受的信息。通过CGI,用户可以在Web页面上添加一些程序,向访问者提供一种方式来存储信息和执行一些外部程序,访问数据库。

  CGI脚本语言分为解释型和编译型两大类。解释型脚本语言不需要预先编译,只由解释器来完成,如Perl、U nix Shell等。其特点是通俗易学,应用广泛,但安全性较差,执行效率低。编译型脚本语言需要预先编译、生成二进制代码,如VC、C++、Visual Basic、Delphi等。编译型脚本语言需要编译环境,依赖于具体的操作平台,但执行效率高,安全性较高。

  为实现信息共享和动态服务,必须能够让Web用户通过CGI访问数据库。CGI需要通过一个接口才能访问数据库,这种接口多种多样,几个大的数据库厂商也对某些CGI脚本语言提供数据库接口。例如,Oracle就提供Perl 对Oracle数据库的接口。

  CGI曾是产生动态WEB页的主要技术,但CGI的灵活性能较差,每当一个客户应用程序调用一个CGI程序时,Web服务器需要创建一个新的进程,执行这个CGI程序,回送执行结果给客户,最后清理使用的资源。如果此时服务器正接受许多客户的请求,Web服务器就要执行大量的任务,从而大大降低了网络的速度。

  而ISAPI(Internet服务器API)或NSAPI(Netscape服务器API)能克服这一问题,使Web服务器能够在其进程空间中执行用户逻辑,并在每一个动态请求发生时无需派生新的执行程序。NSAPI与IS API应用程序十分类似,下面仅以ISAPI为例。

  一个ISAPI应用程序是运行在Web服务器进程空间中的一个线程DLL,当发生HTTP请求调用这个ISA PI DLL时,Web服务器从它的线程池(线程池是一个由Web服务器管理的工作线程集合)中取得一个线程,并启动这个在DLL中执行的线程。而线程可随服务器的负载情况动态地增大或缩小。在执行结果回送到客户端后,则线程也将送回线程池。这一方法比CGI派生新进程来利用系统资源更为有效。不过,使用ISAPI的缺点是线程级安全代码的编写、测试和卸载替换较难。

  三、JDBC

  Java是一种面向对象的编程语言。Java程序独立于开发平台,它被编译成一种字节码序列,并被一种Jav a解释器翻译,翻译后的Java程序可以在具有java解释器的任意系统下运行,而不需要重新编译。这种能力使Jav a成为在Internet上编程的一种理想语言。Java程序可以在Java已经移植到的任意平台上运行。嵌入到WW W页中的Java程序称为Java Applet。

  JDBC规范使JAVA实现数据库的连接,JDBC设计是基于X/OPEN SQL CLI(CALL LE VEL INTERFACE)模型,它定义一组API对象和方法,从而与数据库进行交互。JDBC API是一个数据库接口,用来解释和执行来自应用程序中的SQL语句,并返回结果集。它可以全部用JAVA编写。如SUN和INTER SOLV合作开发的JDBC-ODBCBRIDGE,JDBC-ODBCBRIDEG可以通过在JDBC和ODBC之间建立一个桥梁,让JAVA程序通过JDBC来访问ODBC中的数据源。但目前要编写一段Java代码确实比较麻烦,从而影响它的普及。

  四、ACTIVEX

  ActiveX是Microsoft提出的一组使用COM(Component Object Model)使得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对Internet应用开发的技术,Ac tiveX被广泛应用于WEB服务器以及客户端的各个方面,也被用于创建桌面应用程序。ActiveX目前可在所有的 Windows平台上使用。ActiveX核心元素的ActiveX控制(Custom Controls),可以在单独的应用程序和Web页中重复使用。

  ActiveX和JavaApplet两者都可用来创建动态的Web,然而,也有一些不同,ActiveX不像Java,它是独立于语言的,可以用Visual Basic、Visual C++、Delphi、Borlan d C++和其他开发语言开发。一个ActiveX代码,必须先编译后,才能在网页中使用;而调用ActiveX的网页必须用元素来对之加以描述。与Java的字节码技术相比,ActiveX提供了"代码签名"(Code Signi ng)技术保证其安全性。

  ActiveX控制与其父控制OLE相比,接口更少,并且可以没有窗体,都支持IUnknown接口。目前,很多第三方开发商编制了超过1000个各式各样的ActiveX控制供用户下载使用。

  编写ActiveX控制时必须考虑以下几个问题:文件尽可能小,解释ActiveX控制持续存储数据,附加说明如何在Internet上下载和安装,说明如何在客户端注册。所有这些,会给用户使用ActiveX控制产生不便。

  Delphi能够容易地创建用于建立Web窗体的ActiveX构件。在客户程序嵌入构件后,其执行情况就像应用程序中的任何Delphi窗体一样。下面是用Delphi创建ActiveX来调用数据库的例子:1.关闭所有打开的项目,然后选择File/New;2.在NEW的对话框中选择ActiveX页,然后再选择ActiveX Fo rm图标;3.根据向导(The Active Form Wizard),按提示输入一个新ActiveX名tal k,以及实现后的部件名字;4.把数据集元件如TTABLE、TDATASOURCE置入窗体,并为窗体添加一些相应的代码;5.使用"RUN"菜单上的"Register ActiveX Server"注册ActiveX控件。

  应用程序将编译为talk.ocx,talk.ocx将作为一个ActiveX构件用于创建窗体的代码基(t he code base)。Web应用程序查询到构件相应的类别ID(CLSID),就把活动窗体嵌入到客户的We b页中。Delphi提供一个强有力的特性,叫做"Web调度(Web deploy),它能够快速地建立一个Web 页面去测试构件,并将ActiveX OCX放置到Web服务器上。在使用"Web调度"之前,要从主菜单选择Pro ject/Web Deployment选项配置Web调度选项,如在Target URL框输入:http://w ww.jwet.gov.cn/等;在用此程序创建活动窗口时,如果构件没有打上代码签名,Web浏览器可能拒绝接受构件,此时需要改变浏览器的安全设置为非认证ActiveX构件。在Internet Explore4.0中,可以通过设置安全级为中等来完成。但考虑到WEB的安全性,最好为每个在WEB上使用ActiveX控制设置一个"代码签名"(Code Signing),如要正式发布,则必须向有关机构申请。

  五、小结

  以上介绍的几种WEB数据库技术均各有利弊,用户可根据具体情况加以选择。目前客户端的应用平台大多为基于W indows系列,系统带有浏览器Internet Explorer工具支持OCX技术,使ActiveX技术We b服务得以较好应用。同时,随着Internet和WEB技术发展,新的更强大的WEB数据库开发工具将不断出现,使得服务器及客户端的应用开发、网站建设变得更简单,并容易扩展和重用。
回复
wwnwnl 2003-05-26
to :superhasty(鸟儿自空中飞过)
SQL-DMO??是什么,怎么用呀??
回复
lilyheart1977 2003-05-26
.Net -->ado.net
Java-->JDBC
回复
baoch110 2003-05-26
我用vc+mfc odbc类+ odbc api
回复
wbf420 2003-05-23
ado
回复
Erice 2003-05-23
ado
回复
ahliuj 2003-05-23
DbExpress不错啊,有许多ado无法实现的功能。
回复
superhasty 2003-05-23
SQL-DMO很不错,性能比ADO快多了,可惜只能用来访问SQL Server和Access。
回复
sclzmbie 2003-05-23
OLE DB , 简练干净
回复
dhm168 2003-05-22
.net开发平台:ADO.NET
Visual Studio 6.0:
VB:ADO
VC:ODBC
Delphi:ADO
回复
Rodriguez 2003-05-22
ado
回复
Michaelyfj 2003-05-22
ADO BDE
回复
BluePenguin 2003-05-22
JDBC和JDO还有HIBERNATE怎么都没人提呀
回复
seakang 2003-05-21
VB数据访问接口
VB 数据访问接口功能及含义

ADC高级数据连接器(Advanced Data Connector):

提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLEDB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。

ADOActive数据对象(Active Data Objects):

  ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。

DAO数据访问对象(Data Access Objects):

  是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM数据库,使用DAO/ODBCDirect功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同 DDL(数据描述语言)的功能很类似。DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。

Jet数据连接性引擎技术(Joint Engine Technology):

  是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。

ODBC开放式的数据库连接(Open Database Connectivity):

  是一种公认的关系数据源的接口界面。它快而轻并且提供统一接口的界面,ODBC对任何数据源都未作优化。

ODBC Direct

  是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。

OLE DB

  是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO-技术的应用程序或用于C++的开发者开发定制的数据库组件。OLE DB不能被VB直接调用。

RDC远程数据访问控件(RemoteData Control):

  是一种对RDO数据绑定的控件。可以输出特定的结果集到数据源控件。

RDO远程数据对象(RemoteData Objects):

远程数据对象和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。RDO是ODBC API的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。

VBSQL

是Visual Basic结构化查询语言。是一种基于API的接口方法,几乎与C的DB-Library API相同。VBSQL只支持微软的SQL Server。VBSQL快而且轻但不支持对象界面。
回复
ocool 2003-05-21
ado.net
回复
fslyw 2003-05-21
to seakang(康)
VBSQL 是怎样使用的?可以给个例子吗,“不支持对象界面”是什么意思?
回复
yangzi520 2003-05-21
jdbc
DAO
回复
三杯倒 2003-05-21
oci

odbc

回复
饮水需思源 2003-05-20
ado
回复
fslyw 2003-05-20
to shxhark(泉)
你有想过用ado.net吗?
回复
加载更多回复
相关推荐
发帖
企业信息化
创建于2007-08-27

1742

社区成员

企业开发 企业信息化
申请成为版主
帖子事件
创建了帖子
2003-05-19 09:57
社区公告
暂无公告