当前位置: 首页 > 面试题库 >

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

周滨海
2023-03-14
问题内容

在Java的其他任何地方,任何带有索引的内容都从0开始。这里是否有进行更改的原因,或者这只是不良的设计?


问题答案:

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

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

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



 类似资料:
  • 问题内容: C语言约定从0开始计数数组索引。为什么inode编号从1开始而不是0? 如果保留索引节点0供某些特殊用途,那么索引节点0的意义是什么? 问题答案: 通常,保留索引节点0,因为返回值0通常表示发生错误。Linux内核中的多种方法(尤其是在所有文件系统共享的VFS层中)均返回ino_t,例如find_inode_number。 还有更多保留的索引节点号。例如在ext2中: 和EXT3有:

  • 问题内容: 在许多编程语言中,对于预准备的语句,可能会发生以下情况: 但不能使用java.sql.PreparedStatement。在Java中,必须使用参数索引: 有没有像第一个示例中那样使用字符串变量的解决方案?在SQL语言的其他地方是否未使用过“ $ {。*}”,还是有任何冲突?因为然后我将自己实现(解析SQL字符串,并用“?”替换每个变量,然后以Java方式进行)。 问候,启 问题答案:

  • 问题内容: 在这里,我想索引从1开始的内部for循环,但它没有按预期工作,我还更改了j 问题答案: Java数组始终基于0。您无法更改该行为。您可以从另一个索引填充或使用它,但是不能更改基本索引。 如果您对此感兴趣,请在JLS§10.4中定义。 数组的访问由数组访问表达式(第15.13节)访问,该数组访问表达式包括一个表达式,其值是数组引用,后跟由[和]包围的索引表达式,如A [i]所示。 所有数

  • 问题内容: 我发现了Pandas运算符应用于索引而不是实际数据的困难方式: 我的直觉是该系列包含数字1而不是索引10,这显然是错误的。此行为背后的原因是什么?以下方法是最好的替代方法吗? 更新 我对建议做了一些安排。看来是最好的方法: 问题答案: 将a视为类似于字典的字典可能会有所帮助,其中的值等于。比较: 与: 但是,请注意,对系列进行迭代将对进行迭代,而不是对进行迭代,因此将得出not 。 确

  • 问题内容: 我已经编写了一条准备好的语句,但是它在?处给出了语法错误。我无法理解到底出了什么问题,它应该传递电影名称并作为该电影的导演获得结果 问题答案: 问题在这里: 您不应该将SQL传递给,因为准备好的语句已经包含SQL ,且占位符由的值代替。 用:

  • 我把这个代码从Leaflet api。 不知道在