我正在嘗試製作連接到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