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