Dans JDBC, pourquoi les index de paramètres des instructions préparées commencent-ils par 1 au lieu de 0?

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

Question

Partout ailleurs en Java, tout ce qui a un index commence à 0. Y at-il une raison pour le changement ici ou est-ce simplement une mauvaise conception?

Était-ce utile?

La solution

Historiquement, les bases de données utilisaient une indexation basée sur 1 pour les paramètres liés. Cela reflète probablement les origines des bases de données relationnelles dans la théorie des ensembles et les mathématiques, lesquels indexent les éléments en commençant par un et utilisent zéro pour représenter un ensemble nul ou vide.

Dans les scripts de shell et les expressions régulières, l'index zéro signifie généralement quelque chose de "spécial". Par exemple, dans le cas des scripts de shell, le paramètre "argument" de zeroth est en fait la commande qui a été appelée.

Le choix de JDBC était délibéré, mais il finit probablement par créer plus de confusion et de difficultés qu'il n'en résout.

Autres conseils

Cela faisait partie de l'intrigue des concepteurs de langage d'origine visant à éliminer les faibles. Dans la spécification d'origine, les tableaux étaient numérotés de -1 et les listes avec 1 élément renvoyaient length = 0.

Aujourd'hui, seule l'API de calendrier Java reste de ce complot diabolique.

Personnellement, je qualifierais cela de mauvais design.

Je comprends que JDBC et ODBC sont basés sur l'interface X / Open Call Level. C'est donc l'historique pré-Java, comme les nombres des mois basés sur 0.

Probablement que JDBC a été modelé sur ODBC.

Plus humain peut-être? De plus, le groupe Matcher d'expression régulière Java commence par 1 en tant que premier groupe mis en correspondance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top