gpt4 book ai didi

java - connection.createStatement 有多贵

转载 作者:行者123 更新时间:2023-12-01 22:40:56 24 4
gpt4 key购买 nike

我必须编写一个java程序来从3个表中获取数据。由于某些商业原因我无法加入他们。我必须按如下方式一一获取记录

Fetch all records from Table1
For every record on table1 do
if some business-validation passes
retrieve corresponding records from Table2
For every record on table2 do
if some business-validation passes
retrieve corresponding records from Table3

我编写的代码如下:

Statement statement1 = dbConnection.createStatement();
ResultSet rs1 = statement1.executeQuery("QUERY TO RETRIEVE DATA FROM TABLE1");
while(rs1.next()){
// Do business validation
Statement statement2 = dbConnection.createStatement();
ResultSet rs2 = statement2.executeQuery("QUERY TO RETRIEVE CORRESPONDING DATA FROM TABLE2");
while(rs2.next()){
// Do business validation
Statement statement3 = dbConnection.createStatement();
ResultSet rs3 = statement2.executeQuery("QUERY TO RETRIEVE CORRESPONDING DATA FROM TABLE3");
while(rs3.next()){

}
rs3.close();
statement3.close()
}
rs2.close();
statement2.close()
}
rs1.close();
statement1.close()

每个表可以有数百条记录。现在我的问题是

  1. 在每个循环中执行 createStatement 并关闭它是否正确?会不会很贵?

  2. a。如果我在开始时创建 3 条语句并简单地使用它们来调用 executeQuery(),会怎样?有优势吗?

    b.在这种情况下,我需要在内部使用后关闭 statement2statement3 吗?

  3. 哪种方式是首选方式?有没有更好/更快的方法?

最佳答案

您的查询2和查询3似乎分别接受查询1和查询2结果集中的参数。

为什么不对所有这些都使用PreparedStatement。请参阅此链接了解使用PreparedStatement相对于Statement的好处

Difference between Statement and PreparedStatement

使用PreparedStatement在循环外部声明所有三个语句,然后在循环内部使用它们。@Elliott Frisch 对于关闭任何语句类型都是正确的。

始终尽可能避免循环中的createStatement。

您还必须考虑存储过程。如果您可以编写一个具有循环逻辑的存储过程,那么这可能是最适合您的方法。但这确实取决于具体情况。

关于java - connection.createStatement 有多贵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148152/

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