tipo para obtener ingresar hora guardar formato fecha dato crear como cambiar java jdbc indexing prepared-statement

java - obtener - En JDBC, ¿por qué los índices de parámetros para las declaraciones preparadas comienzan en 1 en lugar de 0?



tipo date mysql java (6)

Entiendo que tanto JDBC como ODBC se basan en la interfaz X / Open Call Level. Entonces, es el historial previo a Java, como los números de mes basados ​​en 0.

En cualquier otro lugar de Java, cualquier elemento con un índice comienza en 0. ¿Hay alguna razón para el cambio aquí o es solo un mal diseño?


Esto fue parte de una trama de los diseñadores del lenguaje original para eliminar a los débiles. En la especificación original, las matrices se numeraron de -1, y las listas con 1 elemento devolvieron longitud = 0.

Hoy, solo la API de calendario de Java permanece de este diagrama diabólico.


Históricamente, las bases de datos han utilizado la indexación basada en 1 para los parámetros vinculados. Esto probablemente refleja los orígenes de las bases de datos relacionales en la teoría de conjuntos y las matemáticas, que indexan elementos que comienzan con uno, y usan cero para representar un conjunto nulo o vacío.

En scripts de shell y expresiones regulares, el índice cero generalmente significa algo "especial". Por ejemplo, en el caso de los scripts de shell, el "argumento" zeroth es en realidad el comando invocado.

La elección de JDBC fue deliberada, pero, en última instancia, probablemente causa más confusión y dificultad de la que resuelve.


Más amigable para los humanos tal vez? Además, el grupo de Matcher de la expresión regular de Java comienza con 1 como el primer grupo coincidente.


Personalmente, atribuiría esto al mal diseño.


Probablemente es que JDBC fue modelado en ODBC.