我需要从一些旧版 Access 数据库导入数据。我使用一些数据库文件运行了代码,一切顺利。现在,我用另一个代码进行了尝试,但相同的代码不起作用。
它似乎与字符编码有关,尽管我没有指定任何内容(并且不知道在哪里执行此操作)。
Double age = resultSet.getDouble("âge");
适用于第一个数据库文件,在另一个数据库文件上给出带有“未找到列”的 SQLException。在有问题的数据库上,resultSet.getMetaData().getColumnName(3)(同一列)给出“?ge”。
更新:看来数据库之间的结果实际上是一致的。我看到的差异是因为第一次导入是从 EJB 项目中的类运行的(我运行了某个类的 main 方法,而不是应用程序服务器中的 EJB 模块)。第二次导入是在一个新的独立项目上完成的。独立 Java 项目总是会因此异常而失败,但在第一个项目中运行相同的代码总是有效。
问题在这里以另一种方式表述:https://stackoverflow.com/questions/6519517/getting-ms-access-column-with-international-character-from-java
最佳答案
通过 JDBC-ODBC 桥和 Access ODBC 驱动程序操作 Access 数据库只能可靠地处理 Windows-1252 字符集中包含的重音字符。在这些情况下,您必须将 Java 源文件的字符编码设置为 cp1252
在 Eclipse 中(或在 NetBeans 中将项目的字符编码设置为 windows-1252
)。如果您的 Java 源文件编码为 UTF-8,那么如果涉及重音字符,您的代码将无法工作。 (更多详情请参阅我的另一个答案 here 。)
要获得更完整的 Unicode 字符支持,请考虑使用 UCanAccess相反。
关于java - 从 Java 检索具有国际名称的 MS Access 列(编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506086/