我准备好的声明中有一个长号问题.这是代码:
String removeCltQry = "DELETE * FROM Clients WHERE client_id = ?";
long client_id = 10;
Connection con = null;
PreparedStatement pstm = null;
try {
con = DBMngerST.instance().getDBCon();
pstm = con.prepareStatement(removeCltQry);
pstm.setLong(1, client_id);
pstm.executeUpdate();
pstm.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLBindInParameterBigint(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setLong(Unknown Source)
at testingPack.test5.main(test5.java:25)
Run Code Online (Sandbox Code Playgroud)
这是怎么造成的,我该如何解决?
根据我的理解,如果ODBC驱动程序的功能与JDBC-ODBC桥的期望不匹配,通常会发生"未实现的可选功能".在这种情况下,看起来setLong在Access端使用的调用和有效数据类型之间存在不匹配.
我的建议是检查您使用的MS Access/ODBC类型是否真正兼容long; 即所有理论上可表示的值都可以表示为Java long值.如果更改架构不起作用,那么最好的办法是将数字视为一个int或String来自Java/JDBC端.
(请记住,您使用的MS Access不是"真正的"数据库,并且MS Access ODBC驱动程序可能具有功能限制.还需要检查新版本的驱动程序和桥接库.)
| 归档时间: |
|
| 查看次数: |
4572 次 |
| 最近记录: |