mORMot訪問遠程數據庫


mORMot訪問遠程數據庫

mORMot中提供了TOleDBJetConnectionProperties類來處理Access的mdb數據庫的訪問,自帶線程池。
通過TSQLDBServerHttpApi類,我們可以把這個TOleDBJetConnectionProperties
發布給遠程的外網來訪問使用。服務器端要引用SynDB,SynDBRemote,SynOleDB,SynDBMidasVCL 這幾個單元。
TSQLDBServerHttpApi 使用了微軟IIS的http.sys通信庫,穩定高效。

代碼如下:
[delphi] view plain copy
unit FrmServerForm;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs,SynDB,SynDBRemote,SynOleDB,SynDBMidasVCL;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
DataBase:TSQLDBConnectionProperties;
DBServer: TSQLDBServerAbstract;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);
begin
DataBase := TOleDBJetConnectionProperties.Create('house.mdb;Jet OLEDB:Database Password=8888;','','','');
DBServer := TSQLDBServerHttpApi.Create(DataBase,'syndbremote','8092','admin','admin888',False);//將database連接到數據庫house.mdb發布給遠程客戶端
//訪問,遠程客戶端訪問時的庫名syndbremote,端口 8092,用戶名 amin,密碼 admin888
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(DataBase);
FreeAndNil(DBServer);
end;

end.

如上,簡單的幾句代碼編譯運行后,遠程客戶端就可以通過TSQLDBWinHTTPConnectionProperties
類來遠程訪問處理服務器上的數據。TSQLDBWinHTTPConnectionProperties創建類實例時,需要指定服務器ip,訪問的數據庫名,端口,用戶名,密碼
constructor TSQLDBWinHTTPConnectionProperties.Create(const aServerName, aDatabaseName, aUserID, aPassWord: RawUTF8);
通過引用 SynDBMidasVCL單元的TSynDBDataSet類,可以實現類似於TAdoquery類的調用方式,客戶端代碼如下:
[delphi] view plain copy
unit FrmClientUnt;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids,
Data.DB, Vcl.ExtCtrls,SynDB,SynDBRemote,SynDBDataset,SynDBMidasVCL;

type
TForm2 = class(TForm)
Panel1: TPanel;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
Props:TSQLDBWinHTTPConnectionProperties;
cds:TSynDBDataSet;
begin
Props := TSQLDBWinHTTPConnectionProperties.Create('127.0.0.1:8092','syndbremote','admin','admin888');
cds := TSynDBDataSet.Create(Self);
cds.Connection := Props;//設置TSynDBDataSet的Connection
cds.CommandText :='select * from HouseInfo '; //定義一個查詢串
cds.Open;
DataSource1.DataSet := cds; //給DbGrid的DataSoured數據庫的Dataset設置為TSynDBDataSet,將查詢結果顯示在DBGrid中

end;

end.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM