首页 > 解决方案 > 尝试执行更新查询,其中行是来自 TEdit 的变量

问题描述

我有一个表,其中包含需要更新的值。过去有很多错别字,因为不同的人添加了项目,所以我不得不使用'like'尽管一切。

我创建了一个包含所有需要更新的必要字段的表单。我用了简单TEdit和一个TLabel. 计划是从编辑框中选择一种类型的项目并使用TListBox.

然后将要更新的信息添加到每个TEdit.

我创建一个更新过程如下:

MyQuery1.SQL.Text := ' UPDATE TheTable SET iName = edtName.text WHERE iType like "%edtType.text%" ';
MyQuery1.SQL.Text := ' UPDATE TheTable SET iPart = edtPart.text WHERE iType like "%edtType.text%" ';
...
MyQuery.ExecSQL;

我的问题是以正确的格式传递edtVariables。如何添加"%之前和%"之后edtVariable

我试过'"%'+edtPart.text+'%"'等等,但我以前从来没有在运行时这样做过。

标签: mysqlsqldelphi

解决方案


在参数化查询中使用 FireDAC,您在参数名称前使用 ':':

MyQuery1.SQL.Text := 'UPDATE TheTable SET iName = :NameText WHERE iType like :TheValue';

然后在执行请求之前设置参数值:

MyQuery1.ParamByName('TheValue').AsString := EdtType.Text;
MyQuery1.ParamByName('NameText').AsString := EdtName.Text;
MyQuery1.ExecSQL;

推荐阅读