java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 可選的功能未實現
PreparedStatement.setXxx() 型別與 Access 資料表欄位型別不符。例如:setString()setString("2024-01-01") 而非 setDate()setInt/setLong/setDate/setTimestamp,AutoNumber 欄位略過不傳值。OUTER JOIN 語法舊版驅動不支援CASE WHEN、LIMIT 等Microsoft Access Driver (*.mdb))功能受限。INSERT INTO Table (Date, Key) VALUES (?, ?) → INSERT INTO Table ([Date], [Key]) VALUES (?, ?)setXxx 索引與型別對應正確?[]?Java 8 起移除 JDBC-ODBC Bridge。諷刺的是,這個錯誤常出現在仍用 Bridge 的舊專案。立即遷移至 UCanAccess:
<dependency>
<groupId>net.sf.ucanaccess</groupId>
<artifactId>ucanaccess</artifactId>
<version>5.0.1</version>
</dependency>
連線字串:jdbc:ucanaccess://C:/path/db.accdb。無需 ODBC DSN、支援完整 SQL-92、效能更佳。
「可選功能未實現」多半是型別不匹配或驅動限制。核對型別、修正 SQL、升級驅動三步走,通常能徹底解決。