Synopse mORMot框架样例学习02 - Embedded SQLite3 ORM
程序员文章站
2024-02-21 12:33:10
...
通过样例01,学习到了数据单元的定义方法,静态服务器的创建方式,以及ORM的基本使用方法,现在来看看样例02 - Embedded SQLite3 ORM,同样从字面意思猜测它应该是介绍嵌入式SQLite3数据库的ORM方法.
通过例02的源码,可以发现只有Project02.dpr工程文件源码,并没有pas单元文件,在例01里边简单做过说明,是因为例02共用01的所有单元,所以看到的项目管理界面和例01是一样的,仅仅有2行工程代码有点变动,如下:
{ 嵌入式数据库引擎初始化 }
Form1.Database := TSQLRestServerDB.Create(Form1.Model, ChangeFileExt(ExeVersion.ProgramFileName, '.db3'));
{ 根据Model(SampleData单元中的定义)创建表格 }
TSQLRestServerDB(Form1.Database).CreateMissingTables;
因为Unit1.pas单元代码就是例01的,所以直接运行程序看看,同样输入3组测试数据:
a MessageA,b MessageB,c MessageC
然后借助sqliteadmin打开例2文件夹下的Project02.db3文件,可以看到数据的存储情况.
添加和查找的过程就是CRUD中的Create和Read,下面试试Update和Delete,先把界面改造一下,添加2个按钮Update和Delete,再添加一个显示日志的Memo,具体界面如下:
具体的实现代码如下:
{ 删除数据的操作 }
procedure TForm1.DeleteButtonClick(Sender: TObject);
var
Rec: TSQLSampleRecord;
begin
Rec := TSQLSampleRecord.Create(Database, 'Name=?', [StringToUTF8(NameEdit.Text)]);
try
if Rec.ID = 0 then
LogMemo.Lines.Add('Delete:无此数据,当前记录' + IntToStr(Database.TableRowCount(TSQLSampleRecord)) + '条')
else
begin
if Database.Delete(TSQLSampleRecord, Rec.ID) then
LogMemo.Lines.Add('Delete:删除一条数据,当前记录' + IntToStr(Database.TableRowCount(TSQLSampleRecord)) + '条')
else
LogMemo.Lines.Add('Delete:删除失败,当前记录' + IntToStr(Database.TableRowCount(TSQLSampleRecord)) + '条');
end;
finally
Rec.Free;
end;
end;
{ 更新数据的操作 }
procedure TForm1.UpdateButtonClick(Sender: TObject);
var
Rec: TSQLSampleRecord;
begin
Rec := TSQLSampleRecord.Create(Database, 'Name=?', [StringToUTF8(NameEdit.Text)]);
try
if Rec.ID = 0 then
LogMemo.Lines.Add('Update:无此数据,当前记录' + IntToStr(Database.TableRowCount(TSQLSampleRecord)) + '条')
else
begin
Rec.Question := StringToUTF8(QuestionMemo.Text);
if Database.Update(Rec) then
LogMemo.Lines.Add('Update:更新一条记录,当前记录' + IntToStr(Database.TableRowCount(TSQLSampleRecord)) + '条')
else
LogMemo.Lines.Add('Update:更新失败,当前记录' + IntToStr(Database.TableRowCount(TSQLSampleRecord)) + '条')
end;
finally
Rec.Free;
end;
end;
同样的代码可以直接用到例01中,效果是一样的,实现这些并没有写任何SQL语句,也就是说这些基本操作是和数据库无关的,看样子这样的设计应该比较好维护,继续学习,希望在学习中不断得到新的养分,充实自己,每天都需要挑战,每天都要进步一点点,防止老年痴呆.
上一篇: Android图片上传实现预览效果