Em JDBC, por que índices de parâmetros para instruções preparadas começam em 1 em vez de 0?

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

Pergunta

Em qualquer outro lugar em Java, qualquer coisa com um índice começa em 0. Existe uma razão para a mudança aqui ou é este projeto apenas ruim?

Foi útil?

Solução

Historicamente, bancos de dados têm utilizado indexação baseada em 1 para os parâmetros vinculados. Isso provavelmente reflete as origens de bancos de dados relacionais na teoria dos conjuntos e matemática, que elementos de índice começando com um, e use zero para representar um nulo ou vazio set.

No shell scripts e expressões regulares, o índice de zero geralmente significa algo "especial". Por exemplo, no caso de scripts shell, o zeroth "argumento" é na verdade o comando que foi invocado.

A escolha para JDBC foi deliberada, mas, em última análise, provavelmente provoca mais confusão e dificuldade do que resolve.

Outras dicas

Este foi parte de uma conspiração pelos projetistas da linguagem originais para eliminar os mais fracos. Na especificação original, matrizes foram numeradas de -1, e listas com um elemento retornado comprimento = 0.

Hoje, apenas os restos java Calendar API deste trama diabólica.

Pessoalmente eu gostaria chalk a má concepção.

Eu entendo tanto JDBC e ODBC são baseados no X / Open Call Level Interface. Assim, história, do pré-Java, como números de mês 0-based.

provável é que JDBC foi modelado em ODBC.

Mais humano amigável, talvez? Além disso, Java expressões regulares do grupo Matcher começa com 1 como o primeiro grupo combinado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top