gpt4 book ai didi

java - JDBC 中 Types.NULL 的使用

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:30 33 4
gpt4 key购买 nike

我想知道 Types.NULL 的预期用途JDBC 中的常量。我从 javadoc 中猜测 SQL 语句中的文字值可以具有 Types.NULL 类型。

例如,此语句中的 null 文字可能具有类型 Types.NULL:

SELECT * FROM integer_table WHERE integer_column = null

我还看到过这样的例子,其中空文字被分配了类型 Types.CHAR,然后当 SQL 处理器发现 integer_column 的类型时更改为 Types.Integer。两种方法都正确吗?一个比另一个更正确吗?

我还猜测您不能拥有类型为 Types.NULL 的列,因为它不是“SQL 类型”。它是否正确?

还有其他用法吗?

注意:我知道空值比较在 SQL 中的行为方式,但这只是一个示例,与我的问题无关。

最佳答案

在一个有 的查询中? IS NULL 作为条件,参数可以描述为 NULL 类型,在这种情况下,JDBC 驱动程序可以将其报告为 Types.NULL .

关于 NULL SQL:2011 说:

Every data type includes a special value, called the null value, sometimes denoted by the keyword NULL. This value differs from other values in the following respects:

  • Since the null value is in every data type, the data type of the null value implied by the keyword NULL cannot be inferred; hence NULL can be used to denote the null value only in certain contexts, rather than everywhere that a literal is permitted.

所以 NULL 类型并不是真正的类型,而是所有类型,另一方面,在我的例子中( 中的一个参数?IS NULL),你需要一些东西来表明值可以是任何 null 或非 null。

例如 Jaybird(Firebird JDBC 驱动程序)就是这种情况;披露:我是 Jaybird 开发人员之一。当参数的类型为 NULL 时,使用任何值调用任何 setXXX 都会使该参数不为 null,但 null 的值除外(或调用 setNull()) 。此外,一些(大多数?)驱动程序将允许使用特定的 sql 类型和 Types.NULL 调用 setNull()

关于java - JDBC 中 Types.NULL 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617697/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com