Delphi firdac三层架构连接sqlserver并进行数据提交代码示例
时间: 2023-12-20 22:06:52 浏览: 41
以下是使用 FireDAC 实现 Delphi 三层架构连接 SQL Server 并进行数据提交的示例代码:
1. 首先,在数据模型层中创建连接,连接 SQL Server 数据库:
```delphi
uses
FireDAC.Phys.MSSQL;
var
FDPhysMSSQLDriverLink: TFDPhysMSSQLDriverLink;
FDConnection: TFDConnection;
// 创建 MSSQL 驱动连接
FDPhysMSSQLDriverLink := TFDPhysMSSQLDriverLink.Create(nil);
FDPhysMSSQLDriverLink.VendorLib := 'sqlncli11.dll';
// 创建连接
FDConnection := TFDConnection.Create(nil);
FDConnection.DriverName := 'MSSQL';
FDConnection.Params.Add('Server=' + ServerName);
FDConnection.Params.Add('Database=' + DatabaseName);
FDConnection.Params.Add('User_Name=' + UserName);
FDConnection.Params.Add('Password=' + Password);
FDConnection.Params.Add('Pooled=True');
FDConnection.Open();
```
2. 在数据模型层中创建数据表结构和 CRUD 操作方法:
```delphi
uses
FireDAC.Comp.Client;
var
FDQuery: TFDQuery;
// 创建查询
FDQuery := TFDQuery.Create(nil);
FDQuery.Connection := FDConnection;
FDQuery.SQL.Text := 'SELECT * FROM MyTable';
// 查询数据
FDQuery.Open;
// 插入数据
FDQuery.SQL.Text := 'INSERT INTO MyTable (Name, Age) VALUES (:Name, :Age)';
FDQuery.Params.ParamByName('Name').AsString := 'John';
FDQuery.Params.ParamByName('Age').AsInteger := 30;
FDQuery.ExecSQL;
// 更新数据
FDQuery.SQL.Text := 'UPDATE MyTable SET Age = :Age WHERE Name = :Name';
FDQuery.Params.ParamByName('Age').AsInteger := 35;
FDQuery.Params.ParamByName('Name').AsString := 'John';
FDQuery.ExecSQL;
// 删除数据
FDQuery.SQL.Text := 'DELETE FROM MyTable WHERE Name = :Name';
FDQuery.Params.ParamByName('Name').AsString := 'John';
FDQuery.ExecSQL;
// 关闭查询
FDQuery.Close;
```
3. 在业务逻辑层中实现业务逻辑和数据校验:
```delphi
uses
System.SysUtils;
type
TMyTableBusinessLogic = class
public
class function InsertRecord(const AName: string; const AAge: Integer): Boolean;
end;
class function TMyTableBusinessLogic.InsertRecord(const AName: string; const AAge: Integer): Boolean;
var
Success: Boolean;
begin
Success := False;
// 检查姓名不为空
if AName = '' then
raise Exception.Create('姓名不能为空');
// 检查年龄大于 0
if AAge <= 0 then
raise Exception.Create('年龄必须大于 0');
// 插入数据
try
FDQuery.SQL.Text := 'INSERT INTO MyTable (Name, Age) VALUES (:Name, :Age)';
FDQuery.Params.ParamByName('Name').AsString := AName;
FDQuery.Params.ParamByName('Age').AsInteger := AAge;
FDQuery.ExecSQL;
Success := True;
except
on E: Exception do
raise Exception.Create('插入数据失败:' + E.Message);
end;
Result := Success;
end;
```
4. 在用户界面层中实现用户界面和数据提交:
```delphi
uses
Vcl.Forms, System.SysUtils;
type
TMyForm = class(TForm)
// ...
private
procedure SaveButtonClick(Sender: TObject);
end;
procedure TMyForm.SaveButtonClick(Sender: TObject);
var
Name: string;
Age: Integer;
begin
try
// 获取用户输入
Name := NameEdit.Text;
Age := StrToInt(AgeEdit.Text);
// 保存数据
if TMyTableBusinessLogic.InsertRecord(Name, Age) then
ShowMessage('保存成功');
except
on E: Exception do
ShowMessage(E.Message);
end;
end;
```
以上就是使用 FireDAC 实现 Delphi 三层架构连接 SQL Server 并进行数据提交的示例代码。需要注意的是,在实际开发中,还需要考虑到数据校验、异常处理等问题。