mORMot 数据库操作

mORMot 数据库操作


1 使用Access数据库,
    引用SynCommons, SynDB,SynOleDb三个单元. 
     var 
         gProps: TSQLDBConnectionProperties; 
         rows: ISQLDBRows; 
         begin 
             gProps := TOleDBJetConnectionProperties.Create('test.mdb', '数据库名', '用户名称', '用户密码'); 
             rows := gProps.ExecuteInlined('select * from dm_sys', True); 
             if rows<>nil then 
                 while rows.Step() do 
                     showmessage(rows.ColumnString('value')); 
         end; 

         普通记录集处理方式,增加单元引用 SynDBMidasVCL 
         var 
             gProps: TSQLDBConnectionProperties; 
             ds: TSynDBDataSet; 
         begin 
             gProps := TOleDBJetConnectionProperties.Create('test.mdb', '数据库名', '用户名称', '用户密码'); 
             ds := TSynDBDataSet.Create(nil); 
             try 
                 ds.Connection := gProps;
                 ds.CommandText := 'select * from dm_sys'; 
                 ds.Open; 
                 ds.First; 
                 while not ds.Eof do 
                     ShowMessage(ds.FieldByName('value').AsString); 
                 ds.Close; 
             finally 
                 FreeAndNil(ds); 
             end; 
         end; 

         以后连接不同类型数据库,仅列出引用单元和初始化代码,具体使用基本同上面的代码。

 2 使用Sqlite3数据库,
    引用  SynCommons, SynDB, SynDBSQLite3, SynSQLite3, SynSQLite3Static 五个单元
    连接方法
        gProps := TSQLDBSQLite3ConnectionProperties.Create('test.db3', '', '', '用户密码'); //Sqlite3 的密码只设置最后一个参数 

 3 使用ZEOS可以连接不同数据库,首先 引用SynCommons, SynDB, SynDBZeos   

    1)连接FireBird:
        gProps := TSQLDBZEOSConnectionProperties.Create(
             'zdbc:firebird-2.0://127.0.0.1:3050/model?username=sysdba;'+ 
             'password=masterkey;LibLocation=fbclient.dll', '', '', ''); 

    2)连接MySql: 
         gProps := TSQLDBZEOSConnectionProperties.Create(
             'zdbc:mysql://127.0.0.1:3306/model?username=sysdba;'+ 
             'password=masterkey;LibLocation=libmysql.dll', '', '', ''); 

    3) 连接MySql Em: 
         gProps := TSQLDBZEOSConnectionProperties.Create(
             'zdbc:mysqld-5:///ahoa?compress=yes;dbless=no;useresult=no;timeout=30;'+ 
             'ServerArgument1=--basedir=./;'+
             'ServerArgument2=--datadir=./data;'+ 
             'ServerArgument3=--character-sets-dir=./share/charsets;'+ 
             'ServerArgument4=--language=./share/english;'+ 
             'ServerArgument5=--key_buffer_size=64M;'+ 'codepage=utf8;AutoEncodeStrings=ON;controls_cp=CP_UTF16;LibLocation=.\lib\libmysqld.dll', '', '', '');
              //MySql增强模式可以在程序启动时启动MySql数据库,无单独的MySql进程。

    4) 连接Oracle: 
         gProps := TSQLDBZEOSConnectionProperties.Create(
             'zdbc:Oracle:///orcl?username=sysdba;password=masterkey;'+ 
             'LibLocation=oci64\oci.dll', '', '', ''); 

    使用ISQLDBRows是速度最快的读取SQL 数据库的方法,如果我们写Web后台程序,这是一个极好的方法。 

4 连接MS SQL Server数据库: 

    uses SynDB, SynOleDB, SynCommons;

    {$R *.dfm}

    procedure TForm1.btnOpenClick(Sender: TObject); 
    var 
        dbConn: TOleDBConnectionProperties; 
        rows: ISQLDBRows; 
        cServer,cDatabase,cUserId,cUserPwd:RawUTF8; 
    begin 
        cServer:='127.0.0.1'; 
        cDatabase:='SM1'; 
        cUserId:='sa'; 
        cUserPwd:='sa'; 
        dbConn := TOleDBMSSQLConnectionProperties.Create(cServer,cDatabase,cUserId,cUserPwd); 
        //Change TOleDBMSSQLConnectionProperties.SetInternalProperties set fProviderName:='SQLOLEDB' 
        //if you don't have SQLNCLI10 installed; 
        //dbConn.ConnectionStringDialogExecute; 
        //dbConn.ConnectionString:='Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=SM1;
        //User Id=xx;Password=xxxx;'; 

        mmoLog.Lines.Add(dbConn.ConnectionString); 
        rows := dbConn.ExecuteInlined(ToUTF8('select * from 部组信息'), True); 
        if rows<>nil then 
            while rows.Step() do 
                mmoLog.Lines.add(rows.ColumnString(ToUTF8('名称'))); 
        dbConn.Free; 
    end;



需要说明的是1.18 将 
  TOleDBMSSQLConnectionProperties 的 
      ProviderName 由SQLOLEDB 改成 
      SQLNCLI10,
   要正常运行,需要安装MSSQL Native Client 10的驱动,
   如果想让你的程序在任何机器上将能跑,
  
   打开SynOleDB.pas将
     TOleDBMSSQLConnectionProperties.SetInternalProperties 
       代码片段改为
     fProviderName:='SQLOLEDB'即可。

     SQLNCLI10与SQLOLEDB都支持SQL Server 2000.

     SQLOLEDB任何Windows都带,
     SQLNCLI10以及更高版本的SQLNCLI11需要安装驱动,驱动又分32位与64位。

     上述代码的toUTF函数是为在Delphi7下编译准备的,如果是2009以上版本可以让编译器自动转换。

     如果要做Json序列化为utf8,可使用ColumnUTF8。


转载于:https://my.oschina.net/u/582827/blog/841210

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值