当字符串包含代码点高于 U+007F 的 Unicode 字符时,JDBC-ODBC 桥将无法与 Access ODBC 驱动程序一起正常工作。希腊字符属于该类别,因此 JDBC-ODBC 桥方法不适合您。 (更多细节here。)此外,JDBC-ODBC 桥已从 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.
(翻译由Google Translate提供。)