0
点赞
收藏
分享

微信扫一扫

Delphi XE DataSnap三层开发实务

一天清晨 2022-01-20 阅读 67

Delphi XE开发三层架构的系统实际上应用的DataSnap机制是非常好用的,在互联网时代的云计算应用具有非常划时代的应用,网络上大多数应用属于示例型的,不具使用价值,这里将实际应用中的操作进行了开发说明;

1、服务器端开发

1.1利用向导设置过程

 

 

 

 

 

 

 这里注意选择DSServerModal便于注册服务应用;

1.2、控件摆放

 

 其中可以使用FD,也可以使用ADO等,个人建议使用ADO,速度和效率非常好。

建议建立独立的数据模块,把ADO放置在其中;设置关系,这里不需要详细说明了,大家都会。

编制代码:

function TServerMethodsA.EchoString(Value: string): string;
begin
  Result := Value;
end;
{  测试  }
function TServerMethodsA.ReverseString(Value: string): string;
begin
  Result := System.StrUtils.ReverseString(Value);
end;
{  测试  }
function TServerMethodsA.ChangeSql(Value:string): Integer;
begin
   Dataset.Close;
   DataSet.CommandText := Value;
   DataSet.Open;
   Result := DataSet.RecordCount;
end;

数据库自动登录代码:

procedure TFrmmain.ConnectAdo;
Var CnnStr : String;
    LoginFlag : Boolean;
    truecnnstr :String;
//label  Redo;
begin
    LoginFlag := False;
    CnnStr := ReadIniFile(Apppath+'\DBContentLocal.dat','DbSet','dbcnn','');
    TrueCnnStr := Decrypt(CnnStr,6);
    if Length(trueCnnStr)=0then
    begin
        TrueCnnStr := PromptDataSource(GetActiveWindow,'');
        CnnStr := Encrypt(TrueCnnStr,6);
        WriteIniFile(Apppath+'.\DBContentLocal.dat','DbSet','dbcnn',CnnStr);
    end;
    Ado.Connected := False;
    Ado.ConnectionString := TrueCnnStr;
    Ado.LoginPrompt := False;
    Try
        Ado.Connected := True;
    Except
        LoginFlag := False;
        TrueCnnStr := PromptDataSource(GetActiveWindow,'');
        CnnStr := Encrypt(TrueCnnStr,6);
        WriteIniFile(Apppath+'.\DBContentLocal.dat','DbSet','dbcnn',CnnStr);
        Ado.Connected := False;
        Ado.ConnectionString := TrueCnnStr;
        Ado.LoginPrompt := False;
        Ado.Connected := True;
    End;
end;

2、客户端开发

 摆放这些空间,设置控件之间的关系。

注意几点:

1、SqlConnection1的ConnectionName选择“DataSnapCONNECTIO”

2、SqlConnection1.Params设置服务器的端口和地址。

3、ClientDataset.remoteServer设置为DSProviderConnection1;

4、ClientDataset.ProvideName设置为服务器开发时候的Provider,注意一致性;

5、右键生成接口实例,便于代码调用,如下图所示:

6、保存生成的实例,开始干活。就这么简单。 

其它的非常简单,可以认真参考一下代码:

USES MidasLib;{方便客户端不使用MIDAS.DLL}
procedure TForm5.BtnModClick(Sender: TObject);
begin
   ClientDataSet.Edit;

   ClientDataset.FieldByName('la').AsInteger := 99;
   ClientDataSet.Post;
   ClientDataSet.ApplyUpdates(0); {不实用不能提交到数据库,只是本地} {0:表示不允许发生错误}
end;

procedure TForm5.Button1Click(Sender: TObject);
begin
   tsc := TServerMethodsAClient.Create(SqlConnection1.DBXConnection); {...注意创建方式}
   tsc.ChangeSql('Select * from datainfo');
   //ClientDataSet.CommandText := 'Select * from DH_Element';
   ClientDataset.Open;
end;
{连接数据库的代码,IP可以按照你的需要设定,支持互联网应用}
procedure TForm5.Button2Click(Sender: TObject);
begin
   SqlConnection1.Close;
   SqlConnection1.Params.Values['HostName'] := Edtip.Text;
   SqlConnection1.Params.Values['Port'] := Edtport.Text;
   SqlConnection1.Open;
end;
end.

举报

相关推荐

0 条评论