这是一个类,我需要返回表名和这些表的列名。我对 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/