明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

借助組件使用asp連接informix全方案

[摘要]注意:本文方案適用于asp通過自開發(fā)組件連接所有類型的數(shù)據(jù)庫現(xiàn)在某些企業(yè)的數(shù)據(jù)庫用的是informix,多數(shù)開發(fā)者對這個數(shù)據(jù)庫操作的比較少,因?yàn)楫?dāng)前該公司已經(jīng)被IBM吃掉,而IBM主推的是其DB2,...

注意:本文方案適用于asp通過自開發(fā)組件連接所有類型的數(shù)據(jù)庫

現(xiàn)在某些企業(yè)的數(shù)據(jù)庫用的是informix,多數(shù)開發(fā)者對這個數(shù)據(jù)庫操作的比較少,

因?yàn)楫?dāng)前該公司已經(jīng)被IBM吃掉,而IBM主推的是其DB2,不多述

使用olddb組件,通過server.createobject("adodb.connection")建立的連接,連

接都可以成功,但是速度是在滿的讓人驚慌,尤其數(shù)據(jù)條數(shù)超過2條的表,即使只

是查詢一條,也幾乎差不出來,整個asp主機(jī)的效率直線下降,內(nèi)存占用增加。對

待此問題,我使用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 ,大家可以根據(jù)自己的需求添加

其他方法、屬性等。

調(diào)用方法如下:
ser var=server.createobject("appname.bdeasp")
set rs=var.open("sql語句","數(shù)據(jù)庫連接語句")

rs使用方法與 adodb.recordset對象完全一樣,經(jīng)測試,速度明顯加快!!系統(tǒng)

消耗大量下降,2000萬條的數(shù)據(jù)表,查詢速度非常迅速。

歡迎大家實(shí)驗(yàn)!!                  --Sonic_qd 2003-10