zoukankan      html  css  js  c++  java
  • mORMot使用基础 2 数据库连接

    程序中要使用数据库,首先是引用SynCommons, SynDB单元,根据不同的数据库类型,简单举几个例子:

    1 使用Access数据库,引用SynCommons, SynDB,SynOleDb三个单元,如果密码为空,设置后面三个参数直接为空就可以了.
    mORMot数据库处理方式

     1 var
     2   gProps: TSQLDBConnectionProperties;
     3   rows: ISQLDBRows;
     4 begin
     5   gProps := TOleDBJetConnectionProperties.Create('test.mdb', '数据库名', '用户名称', '用户密码');
     6   rows := gProps.ExecuteInlined('select * from dm_sys', True);
     7   if rows<>nil then 
     8     while rows.Step() do
     9       showmessage(rows.ColumnString('value'));
    10 end;

    普通记录集处理方式,增加单元引用 SynDBMidasVCL

     1 var
     2   gProps: TSQLDBConnectionProperties;
     3   ds: TSynDBDataSet;
     4 begin
     5   gProps := TOleDBJetConnectionProperties.Create('test.mdb', '数据库名', '用户名称', '用户密码');
     6   ds := TSynDBDataSet.Create(nil);
     7   try
     8     ds.Connection := gProps;
     9 
    10     ds.CommandText := 'select * from dm_sys';
    11     ds.Open;
    12     ds.First;
    13     while not ds.Eof do
    14       ShowMessage(ds.FieldByName('value').AsString);
    15     ds.Close;
    16   finally
    17     FreeAndNil(ds);
    18   end;
    19 end;

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

    2 使用Sqlite3数据库,引用SynCommons, SynDB,SynDBSQLite3, SynSQLite3, SynSQLite3Static
    连接为

    1 gProps := TSQLDBSQLite3ConnectionProperties.Create('test.db3', '', '', '用户密码');

    //Sqlite3的密码只设置最后一个参数

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

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

    连接MySql:

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

    连接MySqlEm:

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

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

     1 type
     2   TForm1 = class(TForm)
     3     mmoLog: TMemo;
     4     btnOpen: TButton;
     5     procedure btnOpenClick(Sender: TObject);
     6   private
     7     { Private declarations }
     8   public
     9     { Public declarations }
    10   end;
    11 
    12 var
    13   Form1: TForm1;
    14 
    15 implementation
    16 
    17 uses SynDB, SynOleDB, SynCommons;
    18 
    19 {$R *.dfm}
    20 
    21 procedure TForm1.btnOpenClick(Sender: TObject);
    22 var
    23   dbConn: TOleDBConnectionProperties;
    24   rows: ISQLDBRows;
    25   cServer,cDatabase,cUserId,cUserPwd:RawUTF8;
    26 begin
    27   cServer:='127.0.0.1';
    28   cDatabase:='SM1';
    29   cUserId:='sa';
    30   cUserPwd:='sa';
    31   dbConn := TOleDBMSSQLConnectionProperties.Create(cServer,cDatabase,cUserId,cUserPwd);
    32   //Change TOleDBMSSQLConnectionProperties.SetInternalProperties set fProviderName:='SQLOLEDB' if you don't have SQLNCLI10 installed;
    33   //dbConn.ConnectionStringDialogExecute;
    34   //dbConn.ConnectionString:='Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=SM1;User Id=xx;Password=xxxx;';
    35   mmoLog.Lines.Add(dbConn.ConnectionString);
    36   rows := dbConn.ExecuteInlined(ToUTF8('select * from 部组信息'), True);
    37   if rows<>nil then
    38     while rows.Step() do
    39       mmoLog.Lines.add(rows.ColumnString(ToUTF8('名称')));
    40   dbConn.Free;
    41 end;
    42 
    43 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。

  • 相关阅读:
    一、vue常用指令
    win10安装和配置node
    win10安装和配置java8
    二、vue-cli4.5脚手架创建vue项目
    配置分布式事务实例:springcloud-Hoxton.SR1+springboot2.2.2+nacos1.3.2+seata1.2.0
    centos7安装frps_0.31.1
    centos7安装nginx1.18.0
    docker安装nexus3
    centos7防火墙的配置
    centos7使用Apache实现HTTP访问SVN资源库
  • 原文地址:https://www.cnblogs.com/Thenext/p/12624666.html
Copyright © 2011-2022 走看看