当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在JDBC中,为什么预处理语句的参数索引从1开始而不是0?》经验,为你挑选了2个好方法。

在Java的其他任何地方,索引的任何东西都从0开始.这里是否有改变的原因或者这只是糟糕的设计?



1> erickson..:

从历史上看,数据库对绑定参数使用了基于1的索引.这可能反映了集合论和数学中关系数据库的起源,它们以1开头的索引元素,并使用零来表示空集或空集.

在shell脚本和正则表达式中,零索引通常意味着"特殊".例如,在shell脚本的情况下,第0个"参数"实际上是被调用的命令.

JDBC的选择是刻意的,但最终可能会导致比它解决的更多混乱和困难.


使用基于0的索引的好处是:你可以使用包含连续`N`元素的区间作为`[0,N)`和`[N,2N)`,`[2N,3N)`等等等等.因此,所有主流语言(如C,C++,Java,JavaScript,Python)都使用最初在C编程语言中使用的基于0的索引约定.这个原则也适用于像`[a,b)`这样的通用索引,其中`a`是包含的,而`b`是独占的.
我不认为从零开始的索引是一种数学假象.我有的每一本线性代数书都开始使用1. FORTRAN编号行/列,默认为1,如果我没记错的话.我认为从零开始的索引是C和指针算法的遗留问题.
就个人而言,我认为基于0的索引是C指针算术的回归,它似乎已经卡住了...我们所有人的不幸.

2> Steve B...:

这是原始语言设计者清除弱者的情节的一部分.在原始规范中,数组从-1开始编号,而包含1个元素的列表返回长度= 0.

今天,只有java Calendar API仍然来自这个恶魔般的情节.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有