asp访问数据库的方式有哪些?
在asp中可以通过三种方式访问数据库:
1、idc(internet database connector)方式;
2、ado(activex data objects)方式;
3、rds(remote data service)方式。
这三种访问方式对数据库的访问都是由internet information server完成的。通过web浏览器用http协议向iis(internet信息服务器)发送请求,iis执行对数据库的访问,并返回一个html格式的文档响应。下面分别说明:
1、idc(internet数据库接口)
idc是一个传统的数据库查询工具,用来定义和执行数据库查询的sql命令,并向浏览器返回一个指定数据格式的页面。使用idc访问数据库最大的特点是简单,几乎不需要编程就能实现对数据库的访问。
idc使用两种文件来控制如何访问数据库以及如何创建返回的web页面:idc (.idc)文件和html扩展(.htx)文件。.idc文件必须包括odbc数据源(datasource)、html扩展文件的文件名(template)以及要执行的sql语句(sqlstatement)。此外还有许多可选字段,可以根据需要选用。
.htx文件是带有用<%%>或<!–%%–>括起来的附加标记的html文档,idc用这些标记将动态数据添加到文档中。在.htx文件中有六个关键字(begindetail、enddetail、if、else、endif和"%z"),用来控制数据库中的数据怎样和.htx文件中html格式进行合并。数据库列名说明html文档中什么数据被返回。
要执行idc查询,通常的做法是在html文件中嵌入一个.idc文件的连接。例如,我们可用下面的html语句向web服务器发出请求,要求执行idctest.idc文件:
<a href="http://localhost/idctest/idctest/idctest.idc">查询</a>
当web服务器接到请求后,就调用httpodbc.dll(idc),与一定的数据源相连并把sql命令传给数据库。当sql语句被执行后,idc把返回的数据融入到.htx文件中。idc再把这个文档返回给web服务器,web服务器再返回给浏览器。
2、ado(activex数据对象)
ado访问数据库,更像编写数据库应用程序。它把绝大部分的数据库操作封装在七个对象中,在asp页面中编程调用这些对象执行相应的数据库操作。
ado是asp技术的核心之一,它集中体现了asp技术丰富而灵活的数据库访问功能。ado建立了基于web方式访问数据库的脚本编写模型,不仅支持任何大型数据库的核心功能,而且支持许多数据库所专有的特性。
ado使用本机数据源,通过odbc访问数据库。这些数据库可以是关系型数据库、文本型数据库、层次型数据库或者任何支持odbc的数据库。主要优点是易用、高速、占用内存和磁盘空间少,所以非常适合于作为服务器端的数据库访问技术。相对于访问数据库的cgi程序而言,它是多线程的,在出现大量并发请求时,也同样可以保持服务器的运行效率,并且通过连接池(connection pool)技术以及对数据库连接资源的完全控制,提供与远程数据库的高效连接与访问,同时它还支持事务处理(transaction),以开发高效率、高可靠性的数据库应用程序。
一般使用ado访问数据库的asp脚本程序应该使用connection对象建立并管理与远程数据库的连接,用command对象提供灵活的查询,用recordset对象访问数据库查询所返回的结果。这三者是ado的最核心的对象。
与idc一样,运行该数据库访问脚本的通常做法是在html文件中嵌入一个.asp文件的连接。如,用html语句向web服务器发出请求,要求执行intels.asp文件:
<a href="http://localhost/idctest/ado/intels.asp">查询</a>
3、rds(远程数据服务)
rds在iis 4.0中,与ado集成到一起,使用同样的编程模型,提供访问远程数据库的功能。ado虽然能够提供非常强大的数据库访问功能,但是它不支持数据远程操作(data remoting)。它只能执行查询并返回数据库查询的结果,这种结果是静态的,服务器上的数据库与客户端看到的数据没有活的连接关系。如果用户端需要修改数据库,就必须构造修改数据的sql语句,并执行相应的查询。而rds支持数据远程操作。它不仅能执行查询并返回数据库查询结果,而且可以把服务器端的数据“搬到”用户端修改,并调用一个数据库更新命令,将用户端修改的数据写回数据库,象使用本地数据库一样。
rds的底层是调用ado来完成的,同样具有ado的易用性,区别仅在于rds需要与数据绑定控件一同使用,比如sheridan的activex databound grid控件。正如ado类似于vb中的rdo一样,rds也类似于vb中的远程数据控件(rdc)。
rds在ado的基础上通过绑定的数据显示和操作控件,提供给客户端更强的数据表现力和远程数据操纵功能。可以说rds是目前基于web的最好的远程数据库访问方式。