为什么我会收到关于我的代码未处理的列的错误?

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

我正在使用 Delphi 12 创建一个 Multi_Device 应用程序。我有一个带有表

Profile
的 SQLite 数据库。我创建了两个表格来看看是否能找到问题。

我添加了一个带有 FDConnection 和 FDTable 的数据模块,其中连接设置为 FDConnection,表名称设置为数据库中的表

Profile
,FDConnection 设置为我的数据库。一切正常,直到我在Android上调试,发现只传输了数据库,但没有传输表。

我直接从 SQLite 的 DB Browser 复制了

CREATE TABLE
SQL。该表已创建,但是当我执行
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 和没有索引的新表,我不再收到错误。 我仍然不知道为什么会出现错误。

抱歉,我的旧 Delphi 没有错误复制按钮。 由于我直接从 SQLite DB 浏览器应用程序复制了 sql 字符串并且它在那里工作,所以我认为这并不重要。我将在没有空格的情况下再试一次,但我看不出如何使 Sql 字符串不带双引号。当我在 Android 中创建 SQLite 字符串来创建表时,它们也有双引号。

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