注意:本文方案适用于asp通过自开发组件连接所有类型的数据库 现在某些企业的数据库用的是informix,多数开发者对这个数据库操作的比较少,因为当前该公司已经被ibm吃掉,而ibm主推的是其db2,不多述
使用olddb组件,通过server.createobject("adodb.connection")建立的连接,连
接都可以成功,但是速度是在满的让人惊慌,尤其数据条数超过2条的表,即使只
是查询一条,也几乎差不出来,整个asp主机的效率直线下降,内存占用增加。对
待此问题,我使用delphi写了一个简单的组件。
主要代码如下:
unit main;
{$warn symbol_platform off}
interface
uses
activex, mtsobj, mtx, comobj, aspbde_tlb, stdvcl,db,dbtables,sysutils;
type
tbdeasp = class(tmtsautoobject, ibdeasp)
protected
function open(const sqlstr, aliname: widestring): olevariant;
safecall;
function execute(const sqlstr, connstr: widestring): olevariant;
safecall;
{ protected declarations }
end;
implementation
uses comserv;
function tbdeasp.open(const sqlstr, aliname: widestring): olevariant;
var
tmpre:variant;
begin
tmpre:=createoleobject('adodb.recordset');
try
tmpre.open(sqlstr,aliname);
except
end;
result:=tmpre;
end;
function tbdeasp.execute(const sqlstr, connstr: widestring): olevariant;
var
tmpre:variant;
begin
tmpre:=createoleobject('adodb.connection');
try
tmpre.open(connstr);
tmpre.execute(sqlstr);
result:=1;
except
result:=0;
end;
end;
initialization
tautoobjectfactory.create(comserver, tbdeasp, class_bdeasp,
cimultiinstance, tmboth);
end.
本程序中只写了最简单的两个方法 open,execute ,大家可以根据自己的需求添加
其他方法、属性等。
调用方法如下:
ser var=server.createobject("appname.bdeasp")
set rs=var.open("sql语句","数据库连接语句")
rs使用方法与 adodb.recordset对象完全一样,经测试,速度明显加快!!!系统
消耗大量下降,2000万条的数据表,查询速度非常迅速。
欢迎大家实验!! --sonic_qd 2003-10
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器