JDBC에서 준비된 문에 대한 매개 변수 인덱스가 0 대신 1에서 시작하는 이유는 무엇입니까?

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

문제

Java의 다른 곳에서는 인덱스가있는 모든 것이 0에서 시작됩니다. 여기서 변경의 이유가 있습니까? 아니면이 잘못된 디자인입니까?

도움이 되었습니까?

해결책

역사적으로 데이터베이스는 바운드 매개 변수에 1 기반 인덱싱을 사용했습니다. 이것은 아마도 세트 이론 및 수학의 관계형 데이터베이스의 기원을 반영하는데, 이는 하나로 시작하는 요소를 색인화하고 널 또는 빈 세트를 나타 내기 위해 0을 사용합니다.

쉘 스크립트와 정규 표현식에서 제로 색인은 일반적으로 "특별한"것을 의미합니다. 예를 들어, 쉘 스크립트의 경우 Zeroth "Argument"는 실제로 호출 된 명령입니다.

JDBC에 대한 선택은 고의적 이었지만 궁극적으로는 아마도 해결하는 것보다 더 많은 혼란과 어려움을 유발할 것입니다.

다른 팁

이것은 원래 언어 디자이너들이 약한 것을 제거하기 위해 음모의 일부였습니다. 원래 사양에서 배열은 -1에서 번호가 매겨졌으며 1 개의 요소가 길이 = 0 인 목록입니다.

오늘날, Java Calendar API 만이이 악의적 인 플롯에서 남아 있습니다.

개인적으로 나는 이것을 나쁜 디자인까지 초크 할 것입니다.

JDBC와 ODBC는 X/Open Call 레벨 인터페이스를 기반으로한다는 것을 이해합니다. 따라서 0 기반 월 숫자와 같은 자바 이전의 역사입니다.

아마도 JDBC가 ODBC에서 모델링되었을 것입니다.

더 인간 친화적인가? 또한 Java의 정규 표현식 매치 업체 그룹은 첫 번째 일치 그룹으로 1로 시작합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top