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
、あなたが変換することができます(わずかに異なるものである)List
にarray
そうように:
Integer[] csc103Array = csc103List.toArray(new Integer[0]);