Devolver una columna de acceso ms en una matriz

Daliseiy:

Estoy intentando devolver una columna de resultados de una tabla de MS Access utilizando Java. Esta es la tablaintroducir descripción de la imagen aquí

Seguí la guía de los documentation.This Java es el código de resultado

public class DatabaseConnector {
    public static void main(String[] args){
        Connection connection=null;
        Statement statement =null;
        ResultSet resultSet = null;

        //Loads JDBC DRIVER
        try {
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        }catch (ClassNotFoundException cnfex){
            System.out.println("There was a problem loading MS Access Driver");
            cnfex.printStackTrace();
        }

        //Loads Database
        try{
            String scoredb="C:/Users/User/"+"/Documents/Database2.accdb";
            String mydburl ="jdbc:ucanaccess://"+scoredb;
            connection = DriverManager.getConnection(mydburl);
            statement = connection.createStatement();


            resultSet = statement.executeQuery("SELECT CSC103,  CSC103 FROM Scores");

            while(resultSet.next()) {
                Array z = resultSet.getArray("CSC103");
                int[] CSC103 = (int[])z.getArray();
                for (int i=0;i<CSC103.length;i++){
                    System.out.println(i);
                }

            }

        } catch (SQLException sqlex){
            sqlex.printStackTrace();
        }

        finally {
            try{
                if (null != connection) {
                    resultSet.close();
                    statement.close();
                    connection.close();
                }
            }catch (SQLException sqlex){
                sqlex.printStackTrace();
            }
        }

Que terminó siendo el error-

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to [Ljava.lang.Object;
    at org.hsqldb.jdbc.JDBCResultSet.getArray(Unknown Source)
    at org.hsqldb.jdbc.JDBCResultSet.getArray(Unknown Source)
    at net.ucanaccess.jdbc.UcanaccessResultSet.getArray(UcanaccessResultSet.java:184)
    at DatabaseConnector.main(DatabaseConnector.java:28)

He echado un vistazo a este error en línea y es un poco confuso porque las soluciones no se aplican a la base de datos. ¿Cómo puedo solucionar el error y consigo mis valores de la columna?

Gord Thompson:

ResultSet#getArrayse utiliza con bases de datos que soportan columnas especiales en las que podemos almacenar una matriz de valores para cada fila en la tabla. Access no tiene un Arraytipo de columna. La CSC103columna de la tabla contiene un único valor ( "escalar") para cada fila, un número entero en este caso.

Así que hay que recuperar los valores individuales para cada fila y añadirlos a una colección de algún tipo. La forma más sencilla sería

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT CSC103 FROM Scores");
java.util.List<Integer> csc103List = new java.util.ArrayList<>();
while (rs.next()) {
    csc103List.add(rs.getInt("CSC103"));
}

después de lo cual usted tendrá los valores de una ArrayList<Integer>. Si realmente necesita un arraytipo Integer(que es una cosa un poco diferente), entonces usted puede convertir el Listen un arraymodo:

Integer[] csc103Array = csc103List.toArray(new Integer[0]);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=333927&siteId=1
Recomendado
Clasificación