Synopse mORMot框架样例学习02 - Embedded SQLite3 ORM
通过样例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语句,也就是说这些基本操作是和数据库无关的,看样子这样的设计应该比较好维护,继续学习,希望在学习中不断得到新的养分,充实自己,每天都需要挑战,每天都要进步一点点,防止老年痴呆.

浙公网安备 33010602011771号