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

У меня была эта проблема в приложении django, с которым я возился (отказ от ответственности: я возился, чтобы учиться, и я никоим образом не специалист). То, что я хотел сделать, это использовать jQuery ajax для отправки запроса DELETE на ресурс, удалить его на стороне сервера, а затем отправить перенаправление обратно (в основном) на главную страницу. Когда я отправил HttpResponseRedirect('/the-redirect/') из скрипта python, метод ajax jQuery получал 200 вместо 302. Таким образом, я сделал, чтобы отправить ответ 300 с помощью:

response = HttpResponse(status='300')
response['Location'] = '/the-redirect/' 
return  response

Затем я отправил / обработал запрос на клиенте с jQuery.ajax, например:

<button onclick="*the-jquery*">Delete</button>

where *the-jquery* =
$.ajax({ 
  type: 'DELETE', 
  url: '/resource-url/', 
  complete: function(jqxhr){ 
    window.location = jqxhr.getResponseHeader('Location'); 
  } 
});

Возможно, использование 300 не является «правильным», но по крайней мере оно работает так, как я этого хотел.

PS: это была огромная боль для редактирования на мобильной версии SO. Глупый интернет-провайдер подал запрос на отмену моего обслуживания, когда я закончил с моим ответом!

32
задан TheTXI 5 March 2009 в 19:01
поделиться

6 ответов

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

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

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

40
ответ дан 27 November 2019 в 16:45
поделиться

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

Сегодня, только Календарный API Java остается от этого дьявольского графика.

18
ответ дан 27 November 2019 в 16:45
поделиться

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

2
ответ дан 27 November 2019 в 16:45
поделиться

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

2
ответ дан 27 November 2019 в 16:45
поделиться

Вероятно, случается так, что JDBC был смоделирован на ODBC.

0
ответ дан 27 November 2019 в 16:45
поделиться

Более человеческая товарищеская встреча, возможно? Кроме того, группа Matcher регулярного выражения Java запускается с 1 как первая подобранная группа.

0
ответ дан 27 November 2019 в 16:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: