gpt4 book ai didi

java - 避免在循环中执行数据库查询

转载 作者:行者123 更新时间:2023-12-02 01:35:55 25 4
gpt4 key购买 nike

我有一个如下表,

process_name |  startTime             | endTime               | parent_id
-------------------------------------------------------------------------
chrome | 2019-03-06 00:48:27 | 2019-03-06 00:48:58 | 111
chrome | 2019-03-07 00:48:27 | 2019-03-07 00:48:58 | 112
firefox | 2019-03-08 00:48:27 | 2019-03-08 00:48:58 | 113
IE | 2019-03-09 00:48:27 | 2019-03-09 00:48:58 | 114
firefox | 2019-03-10 00:48:27 | 2019-03-10 00:48:58 | 115
chrome | 2019-03-11 00:48:27 | 2019-03-11 00:48:58 | 116

表格中的一些要点,

  1. 相同的process_name可以在不同的parent_ids下找到。

  2. 我已经知道 process_name 并且有一个包含 parent_idsArrayList(其中存在)。

对于给定的 process_name,我需要找到 startTimeendTime 中存在的所有 parent_ids我的ArrayList。

我能想到的就是使用 for 循环并执行以下查询。

select startTime, endTime from myTable where parent_id = ? and process_name=?

我可以避免在循环中执行此查询并遵循其他更好的方法吗?

我目前使用 Derby,但数据库可能会更改为 Oracle

最佳答案

有多种方法可以解决此问题:

  1. 正如 Svend 所建议的,由于您已经有了 process_name,您可以获得该进程名称的所有开始和结束时间。

  2. 另一种方法是先准备一串 parent_id,然后使用单个查询将其查询到数据库:

代码:

String s = "(";
for(int i = 0; i < list.length; i++)
{
if(i<list.length-1) s+=list[i] + ",";
else s+= ""+ list[i] + ")";
}

String query = " select startTime, endTime from myTable where parent_id IN " + s + " and process_name=?";

关于java - 避免在循环中执行数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55275876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com