DA应用图解
在Delphi中创建DA项目后,根据向导将需要操作的数据库和其中的表导入到项目中。向导将会自动生成客户端。
在服务器端自动产生如下文件:
一个DataModule
按条件查询
执行Shema中的命令
需要添加的引用单元:
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
uRORemoteService, uROClient, uROBinMessage,
uROWinInetHttpChannel, uDAScriptingProvider, uDADataTable,
uDACDSDataTable, uDADataStreamer, uDABinAdapter, uDARemoteDataAdapter,
ComCtrls, uDAClasses, uDAInterfaces,
uROClientIntf,
DataAbstract4_Intf, NewLibrary_Intf, Grids, DBGrids;
注意 这里自己对照你的单元引用,发现没有的补上,要不会报错吆。
在Delphi中要想在客户端执行命令不需要设置TDataAbstractService的AllowExecuteCommandes属性。而在.net下不设置这个属性为True的话,调用命令时则会抛出异常。
procedure TClientForm.btn2Click(Sender: TObject);
var
FService: INewService; //服务接口 在DataModule中已经自动生成了
Schema: TDASchema; //Schema对象 其中有所有服务端定义的对象
aRowsAffacted : integer;
fcommand: TDASQLCommand;//命令对象
begin
FService:= ClientDataModule.RemoteService as INewService;
//获取Schema
Schema := TDASchema.Create(nil);
Schema.LoadFromXml(FService.GetSchema(''));
try
fcommand := Schema.Commands.SQLCommandByName('Update_Customers');
if fcommand = nil then Exit;
with dataparam.Add do
begin
Name:='CustomerID';
Value:='ALFKI';
end;
with dataparam.Add do
begin
Name:='Fax';
Value:='00112233';
end;
aRowsAffacted := FService.ExecuteCommand('Update_Customers', dataparam);
Application.MessageBox(PChar('影响行数:'+IntToStr(aRowsAffacted)), '警告',MB_OK + MB_ICONWARNING);
except
end;
end;
在客户端执行SQL
要在客户端向服务端发送SQL并执行,需要把服务端的TDataAbstractService的AllowExecuteSQL属性设置为True。
设置完毕后重新编译服务端,启动起来。
在客户端书写代码:
要在客户端执行Select语言,如下: