gpt4 book ai didi

java - 使用 UCanAccess 读取 .mdb 文件返回全部大写的列名

转载 作者:搜寻专家 更新时间:2023-11-01 03:05:50 28 4
gpt4 key购买 nike

我正在从 JDBC-ODBC 桥接驱动程序迁移到 UCanAccess 驱动程序。

在执行此操作时,我遇到了以下问题:UCanAccess 驱动程序以大写形式返回所有列名,但我需要它们是 CamelCase。

有什么想法吗?

谢谢!

最佳答案

UCanAccess 2015 年 8 月发布的 3.x 版 ResultSetMetaData 现在返回大小写混合的列名(如果它们在数据库中是这样定义的)。 (也就是说,它们不再强制为大写。)


(原始答案)

由于 UCanAccess 依赖于 Jackcess,一种可能的解决方法是从 Jackcess 本身检索列名。以下代码,使用 UCanAccess 2.0.4 和 Jackcess 2.0.4,...

package ucanaccesstest;

import java.io.File;
import java.io.IOException;
import java.sql.*;
import com.healthmarketscience.jackcess.*;

public class UCanAccessTestMain {

public static void main(String[] args) {
String dbFileSpec = "C:/Users/Public/mdbTest.mdb";
String tableName = "ucaTest";

// UCanAccess
try (Connection conn = DriverManager.getConnection("jdbc:ucanaccess://" + dbFileSpec)) {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM [" + tableName + "] WHERE False");
ResultSetMetaData rsmd = rs.getMetaData();
System.out.println("Column names as reported by ResultSetMetaData:");
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
System.out.println(rsmd.getColumnName(i));
}
rs.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace(System.out);
}
System.out.println();

// Jackcess
try (Database db = DatabaseBuilder.open(new File(dbFileSpec))) {
Table tbl = db.getTable(tableName);
System.out.println("Column names as reported by Jackcess:");
for (Column col : tbl.getColumns()) {
System.out.println(col.getName());
}
} catch (IOException e) {
e.printStackTrace(System.out);
}
}

}

... 产生以下控制台输出:

Column names as reported by ResultSetMetaData:
ID
FIELD1
FIELD2

Column names as reported by Jackcess:
Id
Field1
Field2

关于java - 使用 UCanAccess 读取 .mdb 文件返回全部大写的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22962667/

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