Delphi 12 SQlite 创建表后出现错误

问题描述 投票:0回答:1

我从 Delphi 第 2 版开始就一直使用 Delphi,但这个问题让我头发花白。 我正在使用 Delphi 12 创建一个多设备应用程序。 我有一个 SQLite 数据库,其中有一个名为 Profile 的表。我创建了一个只有两个表单的程序来看看是否能找到问题,这是我第一次使用FireDac,但我已经使用SQLite制作了很多Android应用程序。 我创建了一个多设备应用程序,并添加了一个带有 FDConnection 和 FDTable 的数据模块,其中连接设置为 FDConnection,表名称设置为数据库中的表 Profile,FDConnection 设置为我的数据库。 一切都运行良好,直到我尝试在 Android 上调试,发现只传输了数据库,但没有传输表。 然后,我添加了一条 SQL 来创建表,我直接从 SQLite 应用程序的数据库浏览器复制了“创建表”。表被创建,但是当它执行 FDTable1.Open 时,我收到此错误:

enter image description here

我没有名为 A.Mobile 的列,并且它创建的表可以在 SQLite 应用程序的数据库浏览器中填充。

这是代码。

procedure TDataModule2.FDConnection1AfterConnect(Sender: TObject);
begin

 if FDConnection1.DataSetCount = 0 then
begin
    FDConnection1.ExecSQL('CREATE TABLE IF NOT EXISTS "Profile" (   "Firstname" TEXT NOT NULL,"Lastname"    TEXT NOT NULL, " Street1 " TEXT NOT NULL, " Street2 " TEXT, " City " TEXT NOT NULL, " Apartment " TEXT, " Building " TEXT, " State " TEXT NOT NULL, " Zip " TEXT NOT NULL, " Phone " TEXT," Email " TEXT, " Mobile " TEXT NOT NULL UNIQUE, " Refby " TEXT, " Starch " TEXT, " RecEmail " INTEGER DEFAULT 1," RecSMS " INTEGER DEFAULT 1, " Verified " INTEGER DEFAULT 0," RefCode " TEXT, " CustomerID " INTEGER,PRIMARY KEY(" Mobile "))');
    FDTable1.Open;
    FDTable1.Append;
end
else
begin
     FDTable1.Open;
end;

end;

procedure TDataModule2.FDConnection1BeforeConnect(Sender: TObject);
var
dbPath: String;
begin
dbPath := 'C:\ComcaMobileDelphi\database\ComcaMApp.db';

{$IF DEFINED(IOS) or DEFINED(ANDROID)}

dbPath := TPath.GetDocumentsPath + PathDelim + 'ComcaMApp.db';

{$ENDIF}

FDConnection1.Params.Values['Database'] := dbPath;


end;
sqlite firedac delphi-12-athens
1个回答
0
投票

我创建了一个没有 NOT NULL、没有 UNIQUE 和没有索引的新表,我不再收到错误。 我仍然不知道为什么会出现错误。

© www.soinside.com 2019 - 2024. All rights reserved.