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

2023-12-22

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

在执行此操作时,我面临以下问题:UCanAccess 驱动程序以大写形式返回所有列名,但我需要它们采用驼峰命名法。

有任何想法吗?

Thx!


With UCanAccess http://ucanaccess.sourceforge.net/site.html版本 3.x,于 2015 年 8 月发布,ResultSetMetaData现在返回混合大小写的列名(如果数据库中是这样定义的)。 (也就是说,它们不再被迫大写。)


(Original Answer)

由于 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 UCanAccess 读取 .mdb 文件会返回全部大写的列名 的相关文章

随机推荐