sqlite - FDQuery 附加给出错误 "no such table"

标签 sqlite delphi firedac

在Delphi 10.1中我做了一个小程序来学习FireDAC和SQlite。

我有FDConnectionFDQuery(使用SQL= SELECT * FROM Sætning)和DataSource + DBGridDBGrid 显示(空)表Sætning。我想将包含 CSV 的列表框中的数据放入表中。

这是我的代码:(fdwSætning = an FDQuery)

procedure TMainForm.bCSV_SQLite_SætningClick(Sender: TObject);
var
  loop : integer;
  nr, lang, tekst : string;
begin
  { Read CSV file into Listbox }
  Listbox1.Items.LoadFromFile('GMS_Saetninger.txt');
  { Put the values from the CSV into the fields in each record }
  for loop:= 0 to Listbox1.Items.Count-1 do begin
    fdqSætning.Edit;
    nr:= copy(Listbox1.Items[loop],1,4);
    lang:= copy(Listbox1.Items[loop],5,2);
    tekst:= copy(Listbox1.Items[loop],8, length(Listbox1.Items[loop]));
    fdqSætning.Append;
    fdqSætning.FieldByName('SAETNING_ID').AsString:= nr;
    fdqSætning.FieldByName('LANGUAGE').AsString:= lang;
    fdqSætning.FieldByName('SENTENCE').AsString:= tekst;
    fdqSætning.Post;
  end;
end; 

当我运行此代码时,我收到错误消息

[FireDAC][phys][SQLite]ERROR:no such table: Sætning

最佳答案

这不应该发生。自德尔福 2009 年以来,FireDAC fully supports Unicode metadata values ,如does SQLite DBMS 。对于您所描述的内容,可能的解释是您已在某些外部工具中创建了表(无法保存 Unicode 元数据)。

因此,即使我强烈建议仅使用 ASCII 字符作为数据库对象名称,自 Delphi 2009 以来您仍然可以使用 FireDAC 执行类似的操作:

FDConnection.Params.Add('DriverID=SQLite');
FDConnection.Params.Add('Database=C:\MyDatabase.db');

FDQuery.SQL.Text := 'CREATE TABLE ṀÿṪäḅḷë (MɏFɨɇłđ INTEGER)';
FDQuery.ExecSQL;
FDQuery.SQL.Text := 'INSERT INTO ṀÿṪäḅḷë (MɏFɨɇłđ) VALUES (1234)';
FDQuery.ExecSQL;
FDQuery.SQL.Text := 'SELECT MɏFɨɇłđ FROM ṀÿṪäḅḷë';
FDQuery.Open;
Assert(FDQuery.FieldByName('MɏFɨɇłđ').AsInteger = 1234);

关于sqlite - FDQuery 附加给出错误 "no such table",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45531391/

相关文章:

delphi 和列表框项目的显示

sql-server - Delphi Firedac MSSQL复制到不同的服务器

sql-server - 在 SQL Server 中创建 USER 生成错误 : SUBQUERY RETURNED MORE THAN 1 VALUE

javascript - 从回调中获取值

Android - Spinner 的数据消失了

delphi - 如何销毁数组数组

qt - Delphi XE - 使用 Qt GUI 库的 Delphi 项目

database - 如何防止 firedac 发布或取消详细记录?

android - 在android中插入数据库时​​出错

c++ - 我正在将官方 SQLite 源代码添加到我的 C++ 项目中,但出现链接器错误