首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否需要在执行查询后执行SELECT查询以修改我的记录以查看更改的结果?

是否需要在执行查询后执行SELECT查询以修改我的记录以查看更改的结果?
EN

Stack Overflow用户
提问于 2011-12-04 22:19:17
回答 3查看 317关注 0票数 2

每次执行查询时(插入、删除、更新)。之后,我需要做选择*从表,这样我的信息可以看到网格控件?

例如:

UniQuery1是我的数据集。我使用的是TDBADvListView控件。

代码语言:javascript
复制
   UniQuery1.Close;

   UniQuery1.SQL.Clear;

   SQL_QUERY:= 'insert into ListaCamiones(Tablilla,Marca,Modelo,Color) Values ('
  +QuotedStr(a1)+','+
   QuotedStr(a2)+','+
   QuotedStr(a3)+','+
   QuotedStr(a4)+')';

   UniQuery1.SQL.Text := SQL_QUERY;

   UniQuery1.Execute;

我需要这样做吗,从ListaCamiones中选择*,这样我就可以在TDBADvListView上看到信息了吗?

EN

回答 3

Stack Overflow用户

发布于 2011-12-04 22:29:09

答案是肯定的和不是的!

是的,您必须再次执行SELECT查询才能聚合修改后的记录集,因为您不必将查询作为单独的执行来执行。

如果在INSERT/ update /DELETE查询字符串末尾追加分号,并立即按照所需的SELECT查询执行,则执行调用将同时更新记录并聚合更新的记录集以供显示。

此外,我也会改变您构建SQL字符串的方式!

代码语言:javascript
复制
const
  INSERT_QUERY_STRING = 'INSERT INTO ListaCaminoes(Tablilla, Marca, Modelo, Color) VALUES ("%s", "%s", "%s", "%s"); SELECT * FROM ListaCaminoes';

// Now inside your method
  UniQuery1.SQL.Text := Format(INSERT_QUERY_STRING, [a1, a2, a3, a4]);
  UniQuery1.Execute;

希望能帮上忙!

票数 3
EN

Stack Overflow用户

发布于 2011-12-05 00:16:39

一般来说,是的,因为根据我的经验,当您通过SQL语句进行数据库更改时:

  1. no数据库组件自动刷新查询,
  2. no数据库可以在数据库中数据更改时刷新应用程序中的数据。

我建议您使用单独的查询组件(UniQuery2)来执行您的SQL语句。您可以使用查询的ReQuery方法重新执行原始查询(UniQuery1)。根据所使用的数据库组件,您的本地游标可能会被重置。

或者,您可以追加/插入以添加记录,而编辑则可以更改UniQuery1的记录。这避免了重新执行原始查询的需要,因为这些更改被添加到查询组件本地缓冲的数据集记录中。但是,重新执行查询对于获取自上次执行查询以来其他用户添加/编辑的记录是必要的。

票数 3
EN

Stack Overflow用户

发布于 2011-12-04 22:41:43

如果您刚刚将信息插入到数据库中,您已经得到了它!

在某些SQL变体中(在mySQL中我是shure),您可以从API中获得命令"insert_id()“,该命令返回最后插入的数据集的AUTO_INCREMENT值。

如果您只想获得这个ID,这是一种方法(就像我说的那样,在mySQL上),但是如果您想获得其他数据,就必须再次查询它。在组合查询中(如前面发布的)或在两个单独的查询中。

很高兴帮忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8379040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档