【问题标题】:safety of setObject and nullsetObject 和 null 的安全性
【发布时间】:2013-03-12 23:03:15
【问题描述】:

PreparedStatement.setObject 的 Javadoc 说只传递 null 值是不安全的,并建议使用 setNull 代替,这需要传递列 DB 类型。

由于在 Java 中判断空值的类型并非易事,我想知道是否有任何资源列出了在流行数据库中使用空值调用 setObject 的安全性?

【问题讨论】:

    标签: java jdbc prepared-statement


    【解决方案1】:

    oracle 的 java 文档上有一个相当有趣的页面。

    ~is interesting page :)~

    阿比纳夫

    根据 EJP 的 cmets 编辑:

    按照 Java 文档,最好遵循 setObject 的声明并推荐:

    void setObject(int parameterIndex, Object x, int targetSqlType)

    注意:并非所有数据库都允许将非类型 Null 发送到后端。为了获得最大的可移植性,应该使用 setNull 或 setObject(int parameterIndex, Object x, int sqlType) 方法来代替 setObject(int parameterIndex, Object x)。

    可以使用上面链接的映射列表来识别对象类型。

    【讨论】:

    • 指向页面的链接,无论是否有趣,都不是答案。这个完全无趣,因为“null”这个词甚至都没有出现。 -1
    • 我会说该页面非常有趣,但与问题无关。我也没有找到 Java 7 的这些表,这是否意味着它们已经过时了?
    • 问题中没有看到 Java 7,所以我发布了一个我收藏的内容。所有这些也适用于 Java 7。用最新的链接更新了第二个链接。
    • 仍然没有回答问题。您的编辑只是包括重申问题。问题是关于“列出在流行数据库中调用具有 null 值的 setObject 的安全性的任何资源”,即显示哪些数据库 setObject() 具有 null 的表格将起作用。你还没有回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2021-09-02
    • 2021-11-19
    相关资源
    最近更新 更多