我正在尝试制作连接到Access数据库的应用程序。我已经通过使用.mdb文件创建了我的Java程序的ODBC连接,但是我在Unicode字符中遇到了这个问题。如果记录是用英文(拉丁)字符编写的,那么.mdb文件会识别这些字符,但是如果记录是用希腊语写的,那么会出现一些奇怪的字符,并且我无法使用ResultSet对象获取记录。有人可以帮忙吗?Java ODBC MS-Access Unicode字符问题
1
A
回答
1
当字符串包含代码点高于U + 007F的Unicode字符时,JDBC-ODBC桥将无法与Access ODBC驱动程序正常工作。希腊字符属于该类别,因此JDBC-ODBC Bridge方法不适用于您。 (更多详细信息here。)此外,JDBC-ODBC Bridge已从Java(自Java 8以来)中删除。
为了得到希腊字符的正确支持,我会推荐使用UCanAccess。有关如何设置的概述,请参阅我的另一个答案here。
一旦您的项目已配置为使用UCanAccess你可以使用这样的代码跟你的Access数据库:
Connection conn=DriverManager.getConnection(
"jdbc:ucanaccess://C:/__tmp/unicode.accdb");
String language = "Greek";
PreparedStatement ps = conn.prepareStatement(
"SELECT [word], [english_equiv] " +
"FROM [vocabulary] " +
"WHERE language=?");
ps.setString(1, language);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println(String.format(
"\"%s\" is %s for \"%s\".",
rs.getString("word"),
language,
rs.getString("english_equiv")));
}
rs.close();
ps.close();
String newWord = "ηλεκτρονικός υπολογιστής";
String newEnglishEquiv = "computer";
ps = conn.prepareStatement(
"INSERT INTO [vocabulary] ([word], [language], [english_equiv]) " +
"VALUES (?,?,?)");
ps.setString(1, newWord);
ps.setString(2, language);
ps.setString(3, newEnglishEquiv);
ps.executeUpdate();
System.out.println(String.format(
"\"%s\" has been added to the table.",
newWord));
该代码产生以下控制台输出:
"γιορτή" is Greek for "feast"
"ηλεκτρονικός υπολογιστής" has been added to the table.
(翻译礼貌
1
如果调用ResultSet.first()或ResultSet.last(),则必须正确初始化Statement或PreparedStatement :
PreparedStatement ps =conn.prepareStatement("SELECT * FROM T1",ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
@Gord,感谢所有你正在做关于UCanAccess。
相关问题
- 1. Unicode字符问题
- 2. Unicode字符颜色问题
- 3. Unicode字符串问题
- 4. Unicode字符显示问题
- 5. PHP的Unicode字符问题
- 6. Unicode字符串的问题
- 7. Java unicode问题
- 8. Java Unicode问题
- 9. Unicode字符问题与中文字符
- 10. Java Unicode字符
- 11. ODBC连接字符串问题
- 12. 解析Java 6字符串文字中的unicode转义问题...?
- 13. 问题渲染Unicode替换字符
- 14. Rails to_json方法:unicode字符问题
- 15. Unicode字符串和FreeHGlobal问题?
- 16. 使用unicode字符串的stristr问题
- 17. 问题与代理unicode字符在F#
- 18. imagejpeg()使用Unicode字符的问题
- 19. unicode字符串问题单元测试
- 20. 将Unicode字符数据库问题
- 21. 问题和PATINDEX和Unicode字符“ - ”
- 22. JavaScript的逃逸问题Unicode字符
- 23. 将unicode字符从本机转换为Java的问题
- 24. Windows上的Java Unicode问题
- 25. Java Unicode问题(我认为)
- 26. Java System.out.print Windows和unicode问题
- 27. msaccess odbc到sqlserver 2005锁定:超时
- 28. Unicode字符转为问号
- 29. iText unicode字体问题
- 30. Spring MVC Unicode符号问题
有些dbs对于非ascii数据有不同的数据类型。 Java字符串是Unicode的设计 – Leo
问题是,虽然我从我的数据库Java获取记录了解非ASCII字母并将它们转换为希腊语,但是当我得到所有记录时会发生这种情况..这意味着我无法搜索特定名称例如导致它不能被确认 – Nomik
好,但我如何使用UCanAccess? – Nomik