在主程序里面把数据库访问控件设置并注册好,在脚本里面使用数据库就非常简单。
可以类似下面的脚本访问数据库。
<%
uses SysUtils, Classes;var aaa,rndnum,bb:string; i,num:integer; begin with cx do begin sql.clear; sql.add('select * from soft'); open; while not cx.eof do begin print(fields[2].asstring);print('<br>');
next; end; end; end.%>要实现数据库访问,我们采用的是的数据库访问控件。该公司有单独访问
oracle,sql server,my sql,interbase 的控件,也有UniDac 控件可以同时访问包括以上数据库
的其他数据库,例如db2,access,sqllite 等。这个公司出品的数据库访问数据库非常快,也比较稳定
更新迅速,能够很快支持最新的数据库系统。尤其是对oracle 的支持,可以直接使用TCP/IP协议
连接oracle 数据库,免去了安装客户端的麻烦,使web 服务器几乎可以实现零配置。原来的delphi 窑洞
就是使用ODAC 连接oracle 11g 的。
确定了数据库访问控件,我们就可以在webbroke 里面设置和处理数据库访问功能。
在webbroke 设置界面放一个Torasession.并设置使其可以访问你的数据库。
并定义两个新类
type
Twebquery = class(ToraQuery); Twebsql=class(TOraSQL);这两个类其实就是为了以后随时更换为其他数据库访问控件,保证脚本不用修改就可以正常运行。
初始化里面加入Twebquery 的脚本注册
g_UnitList := TUnitList.Create;
g_UnitList.AddClass(Twebquery); g_UnitList.Sort; RegisterUnits(g_UnitList, GlobalImportTable);在webmodule 的建立事件里生成两个Twebquery,以方便在脚本里面直接使用。
procedure Twm.WebModuleCreate(Sender: TObject);
begin scx:=TwebQuery.Create(self); zcx:=TwebQuery.Create(self); scx.Session:=dbS; zcx.Session:=dbS;end.并在解释脚本前把其实例到脚本运行时可以访问。
show.WebScripter.Scripter.Reset;
show.WebScripter.Scripter.RegisterVariable(0,'request:TWebRequest;',@Request); show.WebScripter.Scripter.RegisterVariable(0,'response:TWebResponse;',@Response); show.WebScripter.Scripter.RegisterVariable(0,'wm:Twm;', @self); show.WebScripter.Scripter.RegisterVariable(0,'cx:Twebquery;' ,@scx); show.WebScripter.Scripter.RegisterVariable(0,'zcx:Twebquery;' ,@zcx);以上基本上就可以实现直接在脚本里面直接访问数据库了。
使用以下URL 访问 http://127.0.0.1/web?path=test
怎么样很简单吧,系统默认可以直接使用连个查询控件,cx 和zcx.
如果你需要更多的查询的,可以直接使用
myquery :=wm.newquery;
使用后都不需要free,系统在执行完自动会销毁这些对象的。