Delphi中使用FireDAC插入SQLite数据时出现语法错误怎么办?
问题原因与解决方法
- 语法错误根源:SQL语句中使用了SQLite的保留关键字
Group和Keys作为字段名,直接使用会导致SQL解析失败。 - 解决方法:用反引号(`)包裹关键字字段名,让SQLite将其识别为普通字段名。
修改后的代码如下:
procedure TForm1.Button4Click(Sender: TObject); begin if (cxRichEdit2.Text <> '') and (cxTextEdit2.Text <> '') and (cxTextEdit3.Text <> '') then begin // 注意:Group和Keys字段名用反引号包裹 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('请填写所有必填字段!'); end;
补充说明:参数名:group、:keys无需修改,参数名与字段名是独立的,不会被SQL解析器当作关键字处理。
内容的提问来源于stack exchange,提问作者Dusko Jovic
相关产品推荐
相关产品推荐

