如何通过JDBC-ODBC桥在MS Access中指定空值? [英] How to specify null value in MS Access through the JDBC-ODBC bridge?

查看:126
本文介绍了如何通过JDBC-ODBC桥在MS Access中指定空值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am not able to call setNull on PreparedStatement using MS Access (sun.jdbc.odbc.JdbcOdbcDriver)

preparedStatement.setNull(index, sqltype). 

是否有解决方法?对于LONGBINARY数据类型,我尝试了以下调用,但均无效.

Is there a workaround for this? For LONGBINARY data type, I tried the following calls, neither worked.

setNull(index, java.sql.Types.VARBINARY)
setNull(index, java.sql.Types.BINARY)


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)

推荐答案

我已观察的答案非常好",以便将null绑定到大多数使用JDBC 4.1,Java的数据类型7,MS Access 2013和JDBC-ODBC桥就是其中之一,我已将其内置到 jOOQ :

The answer that I have observed to work "quite well" for binding null to most data types with JDBC 4.1, Java 7, MS Access 2013 and the JDBC-ODBC bridge is this one, which I've built into 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;
}

这篇关于如何通过JDBC-ODBC桥在MS Access中指定空值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆