Java 如何在对象数组中存储ResultSet

Java 如何在对象数组中存储ResultSet,java,resultset,Java,Resultset,我无法将结果集存储在对象数组中。我想将它存储在一个对象数组中并返回它,我该怎么做 import java.sql.*; public class TestSQLwithFunction { private static Object[] returnObjectArray() { String connnectionURL = "jdbc:sqlserver://localhost\\FAISAL- FAS:1433;username=sa;pass

我无法将
结果集
存储在对象数组中。我想将它存储在一个对象数组中并返回它,我该怎么做

import java.sql.*;

public class TestSQLwithFunction {
    private static Object[] returnObjectArray() {
         String connnectionURL = "jdbc:sqlserver://localhost\\FAISAL-
         FAS:1433;username=sa;password=password";
         Object ob[] = null;
         try {
             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
             Connection conn = DriverManager.getConnection(connnectionURL);
             ResultSet rs = conn.getMetaData().getSchemas();
             while(rs.next()) {
                 ob =  (Object[]) rs.getObject(1);
             }
         }
         catch(Exception e){
             e.printStackTrace();
         }
         return ob;
    }


    public static void main (String[] args) {
        Object[] checkrs = returnObjectArray();
        for(int i = 0; i <= checkrs.length; i++){
            System.out.println(checkrs);
        }
    }
}
import java.sql.*;
公共类TestSQLwithFunction{
私有静态对象[]returnObjectArray(){
String connectionUrl=“jdbc:sqlserver://localhost\\费萨尔-
FAS:1433;用户名=sa;密码=密码”;
对象ob[]=null;
试一试{
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
Connection conn=DriverManager.getConnection(connnectionURL);
结果集rs=conn.getMetaData().getSchemas();
while(rs.next()){
ob=(Object[])rs.getObject(1);
}
}
捕获(例外e){
e、 printStackTrace();
}
返回ob;
}
公共静态void main(字符串[]args){
Object[]checkrs=returnObjectArray();
对于(int i=0;i
rs.getObject(1)
返回一个对象,但您试图将其强制转换为
对象[]


rs.getObject(1)
返回一个对象,但您试图将其强制转换为
对象[]

创建一个java类,表示SQL中的表。每个成员变量都应该表示SQL表的每一列。然后在遍历该行时,创建该类的一个对象,将结果集的所有数据传递给构造函数。这样,您将在其中一个对象中存储一行。继续执行该操作用于所有行,并将对象存储在某些数据结构中。

创建一个java类,表示SQL中的表。每个成员变量应表示SQL表的每一列。然后在遍历行时,创建一个类的对象,将结果集的所有数据传递给构造函数您将在其中一个对象中存储一行。继续对所有行执行此操作,并将对象存储在某些数据结构中。

尝试此操作

int i=0;
while(rs.next()){
    ob[i]=rs.getObject(i+1);
    i++;
}
试试这个

int i=0;
while(rs.next()){
    ob[i]=rs.getObject(i+1);
    i++;
}

您可以使用对象数组,但也可以使用集合API

试试这个:

 private static ArrayList returnObjectArray()throws Exception {
     String connnectionURL = "jdbc:sqlserver://localhost\\FAISAL-FAS:1433;username=sa;password=password";

        ArrayList<Object> data = new ArrayList();

     try {
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         Connection conn = DriverManager.getConnection(connnectionURL);
         ResultSet rs = conn.getMetaData().getSchemas();

         while(rs.next()) {
             data.add(rs.getObject(1));
         }
     }
     catch(Exception e){
         e.printStackTrace();
     }
     return data;
}


public static void main (String[] args) {
    for(Object checkers: returnObjectArray()){
        System.out.println(checkers);
    }
}
private static ArrayList returnObjectArray()引发异常{
String connectionUrl=“jdbc:sqlserver://localhost\\FAISAL-FAS:1433;用户名=sa;密码=密码”;
ArrayList数据=新的ArrayList();
试一试{
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
Connection conn=DriverManager.getConnection(connnectionURL);
结果集rs=conn.getMetaData().getSchemas();
while(rs.next()){
data.add(rs.getObject(1));
}
}
捕获(例外e){
e、 printStackTrace();
}
返回数据;
}
公共静态void main(字符串[]args){
对于(对象检查器:returnObjectArray()){
系统输出打印LN(检查器);
}
}
我使用了
ArrayList
。如果需要,可以使用键值对使其更灵活。要做到这一点,可以使用
HashMap
HashTable
,也可以创建自己的自定义哈希表

如果您想要定制一个:

  • 为键值对创建一个类(比如说类名对)
  • Pair
    类中,为key和value添加两个变量
  • 实现构造函数:
    Pair(字符串键,对象o){/..}
  • 然后在
    returnObjectArray
    initialize
    ArrayList data=new ArrayList();
  • 然后将值添加为
    data.add(新对(“列名”,rs.getObject(1)))
  • 然后使用为每个循环检索值

  • 您可以使用对象数组,但也可以使用集合API

    试试这个:

     private static ArrayList returnObjectArray()throws Exception {
         String connnectionURL = "jdbc:sqlserver://localhost\\FAISAL-FAS:1433;username=sa;password=password";
    
            ArrayList<Object> data = new ArrayList();
    
         try {
             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
             Connection conn = DriverManager.getConnection(connnectionURL);
             ResultSet rs = conn.getMetaData().getSchemas();
    
             while(rs.next()) {
                 data.add(rs.getObject(1));
             }
         }
         catch(Exception e){
             e.printStackTrace();
         }
         return data;
    }
    
    
    public static void main (String[] args) {
        for(Object checkers: returnObjectArray()){
            System.out.println(checkers);
        }
    }
    
    private static ArrayList returnObjectArray()引发异常{
    String connectionUrl=“jdbc:sqlserver://localhost\\FAISAL-FAS:1433;用户名=sa;密码=密码”;
    ArrayList数据=新的ArrayList();
    试一试{
    Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
    Connection conn=DriverManager.getConnection(connnectionURL);
    结果集rs=conn.getMetaData().getSchemas();
    while(rs.next()){
    data.add(rs.getObject(1));
    }
    }
    捕获(例外e){
    e、 printStackTrace();
    }
    返回数据;
    }
    公共静态void main(字符串[]args){
    对于(对象检查器:returnObjectArray()){
    系统输出打印LN(检查器);
    }
    }
    
    我使用了
    ArrayList
    。如果需要,可以使用键值对使其更灵活。要做到这一点,可以使用
    HashMap
    HashTable
    ,也可以创建自己的自定义哈希表

    如果您想要定制一个:

  • 为键值对创建一个类(比如说类名对)
  • Pair
    类中,为key和value添加两个变量
  • 实现构造函数:
    Pair(字符串键,对象o){/..}
  • 然后在
    returnObjectArray
    initialize
    ArrayList data=new ArrayList();
  • 然后将值添加为
    data.add(新对(“列名”,rs.getObject(1)))
  • 然后使用为每个循环检索值

  • 否则,它将在线程“main”java.lang中出现此编译错误异常。错误:未解决的编译问题:类型不匹配:无法在TestSQLwithFunction处从对象转换为对象[]。在TestSQLwithFunction.main处返回ObjectArray(TestSQLwithFunction.java:13)(TestSQLwithFunction.java:24)如果没有此选项,则在线程“main”java.lang中出现此编译错误异常。错误:未解决的编译问题:类型不匹配:无法在TestSQLwithFunction.returnObjectArray(TestSQLwithFunction.java:13)处从对象转换为对象[]在TestSQLwithFunction.main(TestSQLwithFunction.java:24)@Ezio是对的……使用他的方法……它会的work@Ezio是的…用他的方法…它会起作用的