unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBGrids, StdCtrls,
SQLite3Conn, SQLDB, DB;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
EditUserName: TEdit;
EditUserAge: TEdit;
Label1: TLabel;
Label2: TLabel;
SQLite3Connection1: TSQLite3Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
// 进行查询数据的事务处理
try
// 进行相关连接操作配置
self.SQLite3Connection1.Connected:=True;
self.SQLTransaction1.Active:=True;
self.SQLQuery1.Active:=True;
// 进行数据查询操作
self.SQLQuery1.Open;
except
on E:Exception do
begin
ShowMessage('抱歉,系统异常('+E.Message+'),查询失败!');
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// 进行新增前的数据检测工作
if Trim(self.EditUserName.Text) = '' then
begin
self.EditUserName.Text:='';
ShowMessage('用户姓名数据为必填数据!');
self.EditUserName.SetFocus;
Exit;
end;
if Trim(self.EditUserAge.Text) = '' then
begin
self.EditUserAge.Text:='';
ShowMessage('用户姓名数据为必填数据!');
self.EditUserAge.SetFocus;
Exit;
end;
// 进行新增操作的事务处理
try
// 进行新增操作前的相关配置信息
self.SQLite3Connection1.Connected := True;
self.SQLTransaction1.Active := True;
self.SQLQuery1.Active := True;
// 设置新增操作标记
self.SQLQuery1.Append;
// 设置相关新增字段
self.SQLQuery1.FieldByName('name').AsString := Trim(self.EditUserName.Text);
self.SQLQuery1.FieldByName('age').AsInteger := StrToInt(Trim(self.EditUserAge.Text));
// 将新增的字段缓存起来
self.SQLQuery1.Post;
// 真实应用新增操作
self.SQLQuery1.ApplyUpdates;
// 提交缓存的新增记录到数据库中并保持事务继续打开
self.SQLTransaction1.CommitRetaining;
// 提示用户新增结果
ShowMessage('恭喜,新增成功!');
except
on E:Exception do
begin
// 执行数据库回滚操作
self.SQLTransaction1.Rollback;
// 提示用户新增结果
ShowMessage('抱歉,新增失败!');
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// 进行更新操作前的异常处理操作
try
// 进行新增操作前的相关设置操作
self.SQLite3Connection1.Connected:=True;
self.SQLTransaction1.Active:=True;
self.SQLQuery1.Active:=True;
// 设置当前的模式为编辑状态
self.SQLQuery1.Edit;
// 设置要编辑的字段的新的值
self.SQLQuery1.FieldByName('name').AsString:=Trim(self.EditUserName.Text);
self.SQLQuery1.FieldByName('age').AsInteger:=StrToInt(Trim(self.EditUserAge.Text));
// 将欲进行更新的数据缓存起来
self.SQLQuery1.Post;
// 将缓存的数据应用到数据库中
self.SQLQuery1.ApplyUpdates;
// 进行事物提交操作
self.SQLTransaction1.CommitRetaining;
// 提示用户信息
ShowMessage('恭喜,更新成功!');
// 清空编辑框数据
self.EditUserName.Text:='';
self.EditUserAge.Text:='';
except
on E:Exception do
begin
ShowMessage('抱歉,系统异常('+E.Message+'),更新失败!');
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
SQLQueryStr : String;
begin
// 检测编辑框中是否存在查询数据
if (Trim(self.EditUserName.Text) = '') and (Trim(self.EditUserAge.Text)='') then
begin
ShowMessage('名称和姓名编辑框必须至少填写一项数据才能进行查询操作!');
Exit;
end;
// 设置原始SQL查询语句
SQLQueryStr := 'SELECT * FROM t_students WHERE 1=1 ';
self.SQLQuery1.SQL.Text:=SQLQueryStr;
// 判断是否需要附加名称字段
if Trim(self.EditUserName.Text) <> '' then
begin
SQLQueryStr := SQLQueryStr + 'AND name LIKE :name ';
self.SQLQuery1.SQL.Text:=SQLQueryStr;
self.SQLQuery1.ParamByName('name').AsString:='%' + Trim(self.EditUserName.Text) + '%';
end;
// 判断是否需要附加年龄字段
if Trim(self.EditUserAge.Text) <> '' then
begin
SQLQueryStr := SQLQueryStr + ' AND age = :age ';
self.SQLQuery1.SQL.Text:=SQLQueryStr;
self.SQLQuery1.ParamByName('age').AsInteger:=StrToInt(self.EditUserAge.Text);
end;
// 进行查询操作前的异常处理
try
// 进行查询前的设置操作
self.SQLite3Connection1.Connected:=True;
self.SQLTransaction1.Active:=True;
self.SQLQuery1.Active:=True;
// 设置查询的SQL语句操作
self.SQLQuery1.SQL.Text:=SQLQueryStr;
// 进行查询操作
self.SQLQuery1.Close;
self.SQLQuery1.Open;
// 提示用户
ShowMessage('恭喜,查询成功!');
except
on E:Exception do
begin
ShowMessage('抱歉,系统异常('+E.Message+'),查询失败!');
end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
// 让用户确认是否进行删除操作
if MessageDlg('确认删除', '是否确定要执行删除操作?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then
begin
ShowMessage('您取消了删除操作!');
Exit;
end;
// 进行删除异常处理操作
try
// 进行删除前的配置操作
self.SQLite3Connection1.Connected:=True;
self.SQLTransaction1.Active:=True;
self.SQLQuery1.Active:=True;
// 设置删除状态标记
self.SQLQuery1.Delete;
// 提交删除操作的事务
self.SQLTransaction1.CommitRetaining;
// 提示用户删除操作
ShowMessage('恭喜,删除成功!');
except
on E:Exception do
begin
ShowMessage('抱歉,系统异常('+E.Message+'),删除失败!');
end;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
// 进行查询数据的事务处理
try
// 进行相关连接操作配置
self.SQLite3Connection1.Connected:=True;
self.SQLTransaction1.Active:=True;
self.SQLQuery1.Active:=True;
// 设置查询语句
self.SQLQuery1.SQL.Text:='SELECT * FROM t_students';
// 进行数据查询操作
self.SQLQuery1.Close;
self.SQLQuery1.Open;
except
on E:Exception do
begin
ShowMessage('抱歉,系统异常('+E.Message+'),查询失败!');
end;
end;
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
self.EditUserName.Text:=self.SQLQuery1.FieldByName('name').AsString;
self.EditUserAge.Text:=self.SQLQuery1.FieldByName('age').AsString;
end;
end.