我无法将ResultSet
存储在对象数组中。我想将它存储在一个Object数组中并返回它,我该怎么做?
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);
}
}
}
我得到了这个例外:
java.lang.ClassCastException:java.lang.String无法强制转换为 [Ljava.lang.Object;在 TestSQLwithFunction.returnObjectArray(TestSQLwithFunction.ja VA:13) 在TestSQLwithFunction.main(TestSQLwithFunction.java:24)中的异常 线程“main”java.lang.NullPointerException at TestSQLwithFunction.main(TestSQLwithFunction.java:25)
答案 0 :(得分:2)
创建一个表示SQL中的表的java类。每个成员变量应代表SQL表的每一列。然后,当您遍历该行时,创建一个类的对象,将ResultSet中的所有数据传递给构造函数。这样,您将在其中一个对象中存储一行。继续为所有行执行此操作,并将对象存储在某些数据结构中。
答案 1 :(得分:0)
while(rs.next()) {
ob = (Object[]) rs.getObject(1);
}
rs.getObject(1)
会返回一个Object,但您尝试将其转换为Object[]
答案 2 :(得分:0)
试试这个
int i=0;
while(rs.next()){
ob[i]=rs.getObject(i+1);
i++;
}
答案 3 :(得分:0)
您可以使用对象数组,但也可以使用集合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);
}
}
我使用了ArrayList
。如果需要,可以使用键值对更灵活。为此,您可以使用HashMap
,HashTable
,也可以创建自己的自定义广告。
如果您想要自定义:
Pair
类中为键和值添加两个变量。Pair(String key, Object o){//..}
returnObjectArray
初始化ArrayList<Pair> data = new ArrayList();
data.add(new Pair("column name", rs.getObject(1)))