mORMot 数据库操做mysql
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。