簡體   English   中英

FDQuery追加給出錯誤“沒有這樣的表”

[英]FDQuery append gives error “no such table”

在Delphi 10.1中,我制作了一個小程序來了解FireDAC和SQlite。

我有FDConnectionFDQuery (使用SQL= SELECT * FROM Sætning )和DataSource + DBGrid DBGrid顯示(空)表Sætning 我想從包含CSV的列表框中將數據放入我的表中。

這是我的代碼:( fdwSætning = 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

這不應該發生。 自Delphi 2009起, FireDAC完全支持Unicode元數據值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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM