配列にmsのアクセス列を返します。

Daliseiy:

私はJavaを使用してMS Accessテーブルからスコアの列を返すようにしようとしています。これはテーブルですここでは、画像の説明を入力します。

私は、Javaのdocumentation.Thisからガイドが結果コードで続きます

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();
            }
        }

私は、エラー - を得ることになりました

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)

私は、オンラインでこのエラーを見てとっているし、解決策がデータベースに適用されないので、それは少し混乱です。どのように私は、エラーを修正して、カラムから私の値を得るのですか?

ゴード・トンプソン:

ResultSet#getArray我々は、値の配列を格納することが可能な特別な列をサポートするデータベースで使用される行ごとに表にします。アクセスがありませんArray列タイプを。CSC103テーブル内の列は、行ごとに単一(「スカラー」)値、この場合に整数を含んでいます。

だから、行ごとに個々の値を取得し、いくつかの並べ替えのコレクションに追加する必要があります。最も簡単な方法は次のようになります

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"));
}

その後、あなたは内の値を持っていますArrayList<Integer>あなたがいる場合、実際に必要とするarrayタイプのInteger、あなたが変換することができます(わずかに異なるものである)Listarrayそうように:

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=333924&siteId=1