gpt4 book ai didi

java - 我不知道如何在同一个程序中执行多个查询

转载 作者:行者123 更新时间:2023-12-01 18:17:13 24 4
gpt4 key购买 nike

这是一个类,我需要返回表名和这些表的列名。我对 SQL 没有太多经验,我正在尝试通过我的程序通过算法来完成它。
抛出的错误是:java.sql.SQLException:结果集结束后

import java.sql.*;
public class main {

public static void main(String[] args) {


String[] tableAry = new String[8];
int i = 0;
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/employees",
"user1",
"Password#1");


Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT table_name FROM information_schema.tables "
+ "WHERE table_schema ='employees';");

//gets table names and puts them in an arry
while(rs.next()) {
tableAry[i]=rs.getString(1);
i++;
}


Statement stmt1=con.createStatement();
ResultSet rs1;

//executes a query for column names using said table names
System.out.println("Loop Start");
for (int j=0; j<= tableAry.length; j++)
{
rs1=stmt1.executeQuery("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'" + tableAry[j] + "';");
System.out.println(tableAry[j]+rs.getString(1));
}

con.close();
}catch(Exception e){ System.out.println(e);}

}

}

最佳答案

您的循环将遍历整个结果集rs

while(rs.next()) { 
tableAry[i]=rs.getString(1);
i++;
}

所以当你打电话时

System.out.println(tableAry[j]+rs.getString(1));

rs 将指向结果集的末尾。

所以我假设你真正想做的是:

System.out.println(tableAry[j]+rs1.getString(1));

也许?

关于java - 我不知道如何在同一个程序中执行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60344484/

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