如何将字符串插入 sQlite.sdb (FireDac)?
Posted
技术标签:
【中文标题】如何将字符串插入 sQlite.sdb (FireDac)?【英文标题】:How to insert a string into sQlite.sdb (FireDac)? 【发布时间】:2013-09-23 00:41:25 【问题描述】:我正在尝试将一些文本插入到 sqlite 数据库中。
我正在使用 FireDac 连接和 FireDac Query(FDQuery1) 连接到 sqLite 数据库。 这是代码。
FDQuery1.SQL.Text := 'select * from Invoice where Name = :Name';
FDQuery1.ParamByName('Name').AsString := '123';
FDQuery1.Open;
LinkListControlToField1.BindLink.FillList
我似乎在数据库中插入了一条新记录,但所有字段均为空。 可能是什么问题?
现在我正在使用
NEW_NAME:='dfddf';
SQL :='INSERT INTO INVOICE (Name) VALUES (:NEW_NAME)';
fdquery1.Close;
fdquery1.SQL.Text:= SQL;
FdQuery1.Open();
FDQuery1.Insert;
//Fdquery1.ParamByName('New_Name').AsString := NEW_NAME;
//fdquery1.SQL.Text:='INSERT INTO INVOICE (Name) VALUES (:NEW_NAME)';
fdquery1.FieldByName('Name').AsString := quotedstr(NEW_NAME);
//fdquery1.ExecSQL();
fdquery1.Post;
我收到错误消息。 FireDac、Phys、Sqlite - 308 无法打开/定义命令,wiich 不返回结果集。提示使用执行?用于非 Select 命令的 ExecSql metnod。
从注释代码中可以看出,我正在尝试 ExecSql 但同样的错误。
【问题讨论】:
'Select' statements ... 从数据库中选择数据。他们不插入数据。 看看这里,不同的方式:***.com/questions/18822687/… 代码应该是这样的: 1. INSERT INTO .... 2. Post - 提交事务。 【参考方案1】:虽然 SELECT sql 语句无法将数据插入表中,但可以通过 SELECT sql 语句连接到表的 TDataset 后代插入/追加记录。
例如:
FDQuery1.SQL.Text := 'select * from Invoice';
FDQuery1.Open;
NEW_NAME:='dfddf';
FDQuery1.Append; // or FDQuery1.Insert;
FDQuery1.FieldByName('Name').AsString := NEW_NAME;
// set other column values as needed
FDQuery1.Post;
如果您更喜欢使用 INSERT:
FDQuery1.SQL.Text := 'INSERT INTO INVOICE (Name) VALUES (:NEW_NAME)';
NEW_NAME := 'dfddf';
FDQuery1.ParamByName('NEW_NAME').AsString := NEW_NAME;
// you will have to define parameters for each column
FDQuery1.ExecSQL;
【讨论】:
【参考方案2】:将 FDQuery1.Open 替换为 FDQuery1.ExecSQL;
但是您声明“选择 *...”不要在数据库中插入任何记录...
【讨论】:
以上是关于如何将字符串插入 sQlite.sdb (FireDac)?的主要内容,如果未能解决你的问题,请参考以下文章
如何将@angular/fire 添加到 Nx 工作区(Angular 项目)?
如何将 Fire store ref 对象传递给另一个活动(Kotlin)?
如何从 fire-base 检索数据到新活动中单击 RecyclerView