gpt4 book ai didi

java - 将 ms access 列返回到数组中

转载 作者:行者123 更新时间:2023-11-30 01:46:06 25 4
gpt4 key购买 nike

我正在尝试使用 java 从 MS Access 表中返回一列分数。这是表enter image description here

我按照java文档的指南进行操作。这是结果代码

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与支持特殊列的数据库一起使用,我们可以在其中存储表中每行的值数组。 Access 没有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]);

关于java - 将 ms access 列返回到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57925630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com