为什么我的代码在插入时出现语法错误?

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

对于带有 SQLite 数据库的 Delphi 应用程序,我使用

TFDQuery
TFDConnection
TDataSource
TDBGrid
组件。除
AllKeys
之外的所有字段均为
VARCHAR
AllKeys
TEXT
。一切都连接正确,编译并启动应用程序后,我可以在
TDBGrid
中看到数据库表中的所有记录。但是当我尝试
INSERT
进入数据库表时,我得到:

[FireDAC][Phys][SQLite]错误:接近“某物”语法错误

添加新记录的代码:

procedure TForm1.Button4Click(Sender: TObject);
begin
  if (cxRichEdit2.text <> '') and (cxTextEdit2.Text <> '') and (cxTextEdit3.Text <> '') then
  begin
    // adding data into table
    FDQuery1.sql.Text := 'INSERT INTO tblTags (Group, Title, Keys, AllKeys) VALUES (:group, :title, :keys, :allkeys)';
    FDQuery1.ParamByName('group').asString := ComboBox1.Text;
    FDQuery1.ParamByName('title').asString := cxTextEdit2.Text;
    FDQuery1.ParamByName('keys').asString := cxTextEdit3.Text;
    FDQuery1.ParamByName('allkeys').asString := cxRichEdit2.Text;
    FDQuery1.ExecSQL;
  end
  else
    ShowMessage('Please fill all important fields!');
end;
sqlite delphi sql-insert firedac
2个回答
0
投票

我不知道CxRichedit,但如果它的行为像VCL RichEdit,我想你必须写

FDQuery1.ParamByName('allkeys').asString := cxRichEdit2.lines.Text;

0
投票

这是工作代码:

FDQuery1.sql.Text := 'INSERT INTO tblTags ("Group", "Title", "Keys", "AllKeys") VALUES (:group, :title, :keys, :allkeys)';
FDQuery1.ParamByName('group').asString := ComboBox1.Text;
FDQuery1.ParamByName('title').asString := cxTextEdit2.Text;
FDQuery1.ParamByName('keys').asString := cxTextEdit3.Text;
FDQuery1.ParamByName('allkeys').asString := cxRichEdit2.Text;
FDQuery1.ExecSQL;

我没有将表的字段放在引号“”之间。

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