我想采用以下单元(DrivesData)并在TListView中显示驱动器列。我之前从未使用过(Synopse)SQLite3代码,所以我希望有人能给我一点正确的方向。
只需将DrivesData单元添加到uses子句然后运行,它将创建" drives.sqlite"带有驱动器列表的数据库文件' A'到' Z'。
unit DrivesData;
interface
uses
SynCommons, SQLite3Commons;
type
TDrives = class(TSQLRecord)
private
{ Private declarations }
FDrive: RawUTF8;
protected
{ Protected declarations }
FDrivesModel: TSQLModel;
FDrivesDatabase: TSQLRest;
public
{ Public declarations }
constructor Create(); override;
destructor Destroy(); override;
published
{ Published declarations }
property Drive: RawUTF8 read FDrive write FDrive;
end;
var
DriveRecord: TDrives;
implementation
uses
SQLite3;
function CreateDrivesModel(): TSQLModel;
begin
Result := TSQLModel.Create([TDrives]);
end;
{ TDrives }
constructor TDrives.Create();
var
X: Char;
begin
inherited Create();
FDrivesModel := CreateDrivesModel();
FDrivesDatabase := TSQLRestServerDB.Create(FDrivesModel, 'drives.sqlite');
TSQLRestServerDB(FDrivesDatabase).DB.Execute(
'CREATE TABLE IF NOT EXISTS drives ' +
'(id INTEGER PRIMARY KEY, drive TEXT NOT NULL UNIQUE COLLATE NOCASE);');
for X := 'A' to 'Z' do
begin
TSQLRestServerDB(FDrivesDatabase).DB.Execute(
'INSERT OR IGNORE INTO drives (drive) VALUES ("' + X + ':")');
end;
end;
destructor TDrives.Destroy();
begin
if Assigned(FDrivesDatabase) then
FDrivesDatabase.Free();
if Assigned(FDrivesModel) then
FDrivesModel.Free();
inherited Destroy();
end;
initialization
DriveRecord := TDrives.Create();
finalization
if Assigned(DriveRecord) then
DriveRecord.Free();
end.
答案 0 :(得分:3)
很好的尝试!
但我担心你遗漏了框架的一些要点:
TSQLRecord
映射数据库表,您不应在此类中声明MVC TSQLModel
和TSQLRest
; 除非直接使用TSQLRestServerDB
,否则最好使用TSQLRestClientDB
(将实例化其私有TSQLRestServerDB
),即使您仍在本地工作。因此,您将获得更多功能而不会降低性能。
您在代码中使用Char
类型。我们的框架是面向UTF-8的,所以你应该使用AnsiChar,或使用StringToUtf8()
函数来确保正确性(至少使用Unicode版本的Delphi)。
我建议您查看示例代码源代码和provided documentation(特别是SAD文档,在第一页的常规演示中,包括SynFile主演示)。
要检索某些数据,然后将其显示在VCL中(例如在TListBox
中),请查看TSQLTableJSON
类。 SAD文档中有一些代码示例(如果您有点丢失,请查看文档开头的关键字索引。)
也许StackOverflow不是提出这些具体问题的最佳场所。您可以在http://synopse.info处找到我们的论坛,以发布有关此框架的任何问题。您可以在此处发布您的代码。
感谢您的关注!