Подтвердить что ты не робот

В JDBC, почему индексы параметров для подготовленных операторов начинаются с 1 вместо 0?

Всюду в Java, все с индексом начинается с 0. Есть ли причина для изменения здесь или это просто плохой дизайн?

4b9b3361

Ответ 1

Исторически базы данных использовали индексирование на основе 1 для связанных параметров. Это, вероятно, отражает истоки реляционных баз данных в теории множеств и математике, которые индексируют элементы, начиная с одного, и используют ноль для представления нулевого или пустого набора.

В сценариях оболочки и регулярных выражениях нулевой индекс обычно означает что-то "специальное". Например, в случае сценариев оболочки нулевой аргумент - это фактически вызванная команда.

Выбор для JDBC был преднамеренным, но, в конечном счете, вероятно, вызывает больше путаницы и трудности, чем он решает.

Ответ 2

Это было частью сюжета оригинальными разработчиками языка для отсечения слабых. В исходной спецификации массивы были пронумерованы от -1, а списки с 1 элементом возвратили length = 0.

Сегодня из этого дьявольского сюжета остается только API-интерфейс Java.

Ответ 3

Лично я бы сделал это до плохого дизайна.

Ответ 4

Я понимаю, что JDBC и ODBC основаны на интерфейсе уровня X/Open Call Level. Итак, это предыстория Java, например, число в месяц на основе 0.

Ответ 5

Скорее всего, JDBC был смоделирован на ODBC.

Ответ 6

Может быть, дружелюбный человек? Кроме того, группа регулярных выражений Java начинается с 1 в качестве первой согласованной группы.