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

StackOverflow https://stackoverflow.com/questions/616135

Pregunta

En todas partes en Java, cualquier cosa con un índice comienza en 0. ¿Hay alguna razón para el cambio aquí o es simplemente un mal diseño?

¿Fue útil?

Solución

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

En los scripts de shell y las expresiones regulares, el índice cero por lo general significa algo "especial". Por ejemplo, en el caso de los scripts de shell, el argumento cero "quot" es en realidad el comando que se invocó.

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

Otros consejos

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 length = 0.

Hoy en día, solo queda la API de calendario de Java de este gráfico diabólico.

Personalmente lo atribuía a un mal diseño.

Entiendo que tanto JDBC como ODBC se basan en la interfaz de nivel de llamada X / Open. Por lo tanto, es el historial pre-Java, como los números de mes basados ??en 0.

Es probable que JDBC haya sido modelado en ODBC.

¿Tal vez más amigos humanos? Además, la expresión regular de Java del grupo de Matcher comienza con 1 como el primer grupo coincidente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top