gpt4 book ai didi

java - 插入查询仅插入数据库表中结果集中的第一行

转载 作者:行者123 更新时间:2023-12-02 07:33:51 24 4
gpt4 key购买 nike

我正在从表 EmployeeLeave 中获取记录并将其存储在结果集中。然后我将此结果集插入数据库表中,但我只能插入结果集的第一行而不是所有行。
如何插入结果集中的所有行?

r = stmt.executeQuery("select * from EmployeeLeave where EmployeeNo='"+empno+"'");
while(r.next())
{
for(int i=0;i<=r.getRow();i++)
{
int empid = r.getInt(1);
String leave = r.getString(2);
r = stmt.executeQuery("insert into ApprovedLeave values('"+empid+"','"+leave+"','True')");
}
}

最佳答案

当您第一次执行内部查询时,它会关闭外部查询的结果集,因为您正在重复使用相同的 jdbc 语句。为此,您需要使用两个不同的语句对象实例。

但是,实际上没有理由将所有数据拉回应用程序,而只是将其发送回数据库。您可以执行类似的操作(语法可能会因数据库供应商而略有不同):

"insert into ApprovedLeave select EmployeeNo, leave, 'True' from EmployeeLeave where EmployeeNo = '" + empno + "'"

更好的是,PreparedStatement 具有以下内容:

"insert into ApprovedLeave select EmployeeNo, leave, 'True' from EmployeeLeave where EmployeeNo = ?" 

然后将 empno 变量绑定(bind)到语句

关于java - 插入查询仅插入数据库表中结果集中的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544581/

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