//------------------------------------------------------------------------------ // Uint: 例子/数据库(必须先在“WebApp配置->数据库”选项中添加master实例) //------------------------------------------------------------------------------ unit database; interface uses System.SysUtils, System.IOUtils, System.DateUtils, System.Classes, System.Generics.Collections, FireHttp.Utils, FireHttp.Types, FireHttp.Classes, FireHttp.HTML, FireHttp.Path, FireHttp.Log, FireHttp.Config; type example_database = class(THTMLHandler) public const __PathInfo = '/database'; const __Description = ''; protected procedure Execute; override; procedure Cleanup; override; public constructor Create(AThread: TWorkerThread); override; destructor Destroy; override; end; implementation uses Database.DBManager, Database.DBTable_Generator, Database.DBTable_Log; { example_database } procedure example_database.Cleanup; begin inherited; end; constructor example_database.Create(AThread: TWorkerThread); begin inherited Create(AThread); {$region '设置处理者'} MultiPathInfo.Add(__PathInfo); Description := __Description; {$endregion} end; destructor example_database.Destroy; begin inherited; end; procedure example_database.Execute; var form, input, table, tr, th, td: THTMLElement; i: Integer; log: TDBRecord_Log; loglist: TObjectList; maxpageindex: Integer; submit_value: string; logid: Int64; begin inherited; if (Request.Method = THttpMethod._POST) then begin {$region '点击了“Add”按钮'} submit_value := Request.ContentFields.GetAsString('Add'); if SameText(submit_value, 'Add') then begin //从生成器获取最新的logid logid := DBManager.Generator.NewLogId; //添加一条记录 DBManager.Log.New(logid, 'text', 'This is the content ' + IntToStr(logid), Now); end; {$endregion} {$region '点击了“Clear”按钮'} submit_value := Request.ContentFields.GetAsString('Clear'); if SameText(submit_value, 'Clear') then begin //清空Log数据表 DBManager.Log.DeleteAll; end; {$endregion} end; {$region '创建表单与按钮'} form := Document.CreateElement_FORM(Document.Body); form.Attributes['action'] := 'database'; form.Attributes['method'] := 'POST'; input := Document.CreateElement_INPUT_SUBMIT(form); input.Attributes['name'] := 'Add'; input.Attributes['value'] := 'Add'; input := Document.CreateElement_INPUT_SUBMIT(form); input.Attributes['name'] := 'Clear'; input.Attributes['value'] := 'Clear'; {$endregion} //添加水平线 Document.CreateElement_HR(Document.Body); {$region '创建Table与表头'} table := Document.CreateElement_TABLE(Document.Body); table.Attributes['border'] := '2'; tr := Document.CreateElement_TR(table); th := Document.CreateElement_TH(tr); th.Text := 'logid'; th := Document.CreateElement_TH(tr); th.Text := 'logtype'; th := Document.CreateElement_TH(tr); th.Text := 'content'; th := Document.CreateElement_TH(tr); th.Text := 'createtime'; {$endregion} loglist := TObjectList.Create; try //查询数据 DBManager.Log.List('', '', 1000, 1, maxpageindex, loglist); for i := 0 to loglist.Count - 1 do begin log := loglist.Items[i]; {$region '添加数据行'} tr := Document.CreateElement_TR(table); td := Document.CreateElement_TD(tr); td.Text := IntToStr(log.logid); td := Document.CreateElement_TD(tr); td.Text := log.logtype; td := Document.CreateElement_TD(tr); td.Text := log.content; td := Document.CreateElement_TD(tr); td.Text := DateTimeToStr(log.createtime); {$endregion} end; finally FreeObject(loglist); end; end; initialization RegisterHandlerClass(example_database); end.