如何通过JDBC-ODBC桥在MS Access中指定空值?

Fir*_*rat 4 ms-access odbc blob jdbc jdbc-odbc

我无法使用MS Access(sun.jdbc.odbc.JdbcOdbcDriver)在PreparedStatement上调用setNull

preparedStatement.setNull(index, sqltype). 
Run Code Online (Sandbox Code Playgroud)

这有解决方法吗?对于LONGBINARY数据类型,我尝试了以下调用,但都没有工作.

setNull(index, java.sql.Types.VARBINARY)
setNull(index, java.sql.Types.BINARY)
Run Code Online (Sandbox Code Playgroud)
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Invalid SQL data type
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLBindInParameterNull(JdbcOdbc.java:986)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setNull(JdbcOdbcPreparedStatement.java:363)

Luk*_*der 5

我已经观察到,null使用JDBC 4.1,Java 7,MS Access 2013和JDBC-ODBC桥接器绑定到大多数数据类型的"相当好" 的答案就是这个,我已经在jOOQ中构建了:

switch (sqlType) {
    case Types.BINARY:
    case Types.VARBINARY:
    case Types.LONGVARBINARY:
    case Types.BLOB:
        stmt.setNull(nextIndex(), Types.VARCHAR);
        break;

    default:
        stmt.setString(nextIndex(), null);
        break;
}
Run Code Online (Sandbox Code Playgroud)