不管是网站,还是接口,都离不开数据展示或处理的操作,脚本模型采用的是Delphi中的FireDAC组件来连接和操作数据库的,目前脚本模型中只添加了msaccess、mssql和oracle的支持,当然,添加其它数据库的支持,也是比较简单的事,不过要注意的是,FireDAC并不会帮你处理数据库连接所需的驱动,所以你连接对应的数据库时,需要自己安装驱动,比如在win64位环境下,连接msaccess需要安装对应的驱动程序,比如连接oracle,也需要自己安装oracle的客户端或者带上那几个dll动态库文件。

目前提供了以下操作数据库的函数,分别为DBConn、DBExec、DBQuery、DBQueryToJson、DBQueryToTxt和DBQueryToExcel,在使用前,需要先使用DBConn定义数据源,也就是连接什么数据库,可参考以下设置:

<?

   //连接 MSAccess 数据库的连接字符串

   $s:=DBConn('mydb','DriverID=MSAcc;Database=.\db.mdb;'

 

   //连接 MSSQL2000 数据库的连接字符串 odbc模式

   //$s:=DBConn('mydb','DriverID=MSSQL2000;Server=127.0.0.1;Database=test;User_name=sa;Password=;'

   //$s:=DBConn('mydb','DriverID=MSSQL2000;Database=test;Server=127.0.0.1;OSAuthent=Yes;'

 

   //连接 MSSQL2000以上版本 数据库的连接字符串

   //$s:=DBConn('mydb','DriverID=MSSQL;Server=127.0.0.1;Database=test;User_name=sa;Password=;'

   //$s:=DBConn('mydb','DriverID=MSSQL;Database=test;Server=127.0.0.1;OSAuthent=Yes;'

 

   //连接 mysql 数据库的连接字符串 需要libmysql.dll和libmysqld.dll支持,请查看单独演示mysql.api

   //$s:=DBConn('mydb','DriverID=MySQL;Database=mysql;Server=127.0.0.1;Port=3306;User_name=root;'

 

   //连接 ORACLE 数据库的连接字符串 需要oci.dll、oraocci11.dll、oraociei11.dll、orasql11.dll支持

   //$s:=DBConn('mydb','DriverID=Ora;Database=OraSrv:1521/orcl;User_name=ADDemo;Password=a;'

 

   + 'Pooled=True;POOL_CleanupTimeout=30000;POOL_ExpireTimeout=90000;POOL_MaximumItems=200;');

?>

 

以上是部分数据源的设置,其它的请参考FireDac的说明。
使用示例如下:

 

<?

   //初始化数据源

   include('/数据库相关演示/conn.cfg');

   //Query演示部分

   '<font color="#FF0000">Query:查询并返回数据(DataSet)</font> DBQuery<br>'

   //比如3个参数,第一个为数据源,第二个为sql语句,3为p1,4为p2 ...

   $x:=DBQuery('mydb','select * from tuser where fid<>:p1',0);

   (*

      fid fuser fpwd fname

      1 admin admin 管理员

      2 test test 测试

   *)

   if $x.EMPTY then

   begin

      '没有可用的数据'

   end else

   begin

      $x.first;

      while not $x.eof do

      begin

         '第' $x.row+1 '行:'

         for $i:=0 to $x.fieldcount-1 do

         begin

            $x($i);

            if $i<$x.fieldcount-1 then ', ';

         end;

         '<br>'

         $x.next;

      end;

   end;

 

   '<br><font color="#FF0000">Query:查询并返回数据为json</font> DBQueryToJSON<br>'

   UnicodeToAnsi(DBQueryToJSON('mydb','select * from tuser'));

   '<br><br>'

   '<font color="#FF0000">Query:查询并返回数据,保存成文件,并返回下载链接</font> DBQueryToExcel<br>'

   //比如3个参数,第一个为数据源,第二个为sql语句,3为p1,4为p2 ...

   DBQueryToExcel('mydb','select fid as 序号,fuser as 用户名,fpwd as 密码,fname as 姓名,'

   +'fage as 年龄,fnote as 备注 from tuser where fuser<>:p1','你好');

   '<br><br>'

   '<font color="#FF0000">Query:查询并返回数据,保存成文件,并返回下载链接</font> DBQueryToTxt<br>'

   //比如3个参数,第一个为数据源,第二个为sql语句,3为p1,4为p2 ...

   DBQueryToTxt('mydb','select fid as 序号,fuser as 用户名,fpwd as 密码,fname as 姓名,fage as 年龄,'

   +'fnote as 备注 from tuser where fuser<>:p1','你好');

   //ExecSQL部分演示

   '<br><br><font color="#FF0000">ExecSQL:执行SQL语句并返回处理结果</font> DBExec<br>'

   '<font color="#FF00FF">修改前数据</font><br>'

   UnicodeToAnsi(DBQueryToJSON('mydb','select * from tuser'));

   '<br>结果:'DBExec('mydb','update tuser set fpwd=:p1,fage=:p3 where fuser=:p2','xxoo','test',88);

   '<br><font color="#FF00FF">修改后数据</font><br>'

   UnicodeToAnsi(DBQueryToJSON('mydb','select * from tuser'));

   '<br>结果:'DBExec('mydb','update tuser set fpwd=:p1,fage=:p3 where fuser=:p2','test','test',3);

   '<br><font color="#FF00FF">还原后数据</font><br>'

   UnicodeToAnsi(DBQueryToJSON('mydb','select * from tuser'));

?>