在 JDBC 中,为什么预准备语句的参数索引从 1 开始而不是 0?

2022-09-01 04:26:47

在 Java 中的其他任何地方,任何具有索引的东西都从 0 开始。这里的变化是有原因的,还是这只是糟糕的设计?


答案 1

以前,数据库对绑定参数使用基于 1 的索引。这可能反映了集合论和数学中关系数据库的起源,这些数据库索引从一开始的元素,并使用零来表示空集或空集。

在 shell 脚本和正则表达式中,零索引通常表示“特殊”的东西。例如,对于 shell 脚本,第 0 个“参数”实际上是被调用的命令。

JDBC的选择是经过深思熟虑的,但最终,可能会导致比它解决的更多的混乱和困难。


答案 2

这是原始语言设计师清除弱者的阴谋的一部分。在原始规范中,数组的编号为 -1,返回长度 =0 的 1 元素的列表。

今天,只有java Calendar API从这个恶魔般的情节中保留下来。


推荐