Java의 다른 모든 곳에서 색인이있는 항목은 모두 0부터 시작합니다. 여기에 변경해야 할 이유가 있습니까? 아니면 그냥 나쁜 설계입니까?JDBC에서 준비된 명령문의 매개 변수 색인이 0 대신 1에서 시작하는 이유는 무엇입니까?
답변
역사적으로 데이터베이스는 바인딩 된 매개 변수에 대해 1 기반 인덱싱을 사용했습니다. 이것은 집합 이론과 수학에서 관계형 데이터베이스의 기원을 반영 할 것입니다.이 관계형 데이터베이스는 1로 시작하는 요소를 색인화하고 0을 사용하여 null 또는 빈 집합을 나타냅니다.
셸 스크립트와 정규 표현식에서 제로 인덱스는 일반적으로 "특별한"것을 의미합니다. 예를 들어 쉘 스크립트의 경우, "인수"가 실제로 호출 된 명령입니다.
JDBC에 대한 선택은 의도적이지만 궁극적으로 해결할 수있는 것보다 혼란과 어려움을 야기 할 수 있습니다.
수학에서 제로 인덱싱 (보통 제 경험 (3 학년 BSc))이 더 쉽습니다. –
제로 기반 인덱싱이 수학적 산출물이라고 생각하지 않습니다. 모든 선형 대수학 책은 행/열의 번호를 매기 기 시작합니다. 1. FORTRAN의 기본값은 1입니다. 제로 기반 인덱싱은 C 및 포인터 연산의 유산이라고 생각합니다. – duffymo
개인적으로, 나는 0 기반 색인 생성이 C 포인터 연산으로부터의 회피라고 생각합니다. 이것은 우리 모두의 불행에 붙어있는 것 같습니다. –
아마 JDBC가 ODBC에서 모델링 된 것입니다.
둘 다 X/Open 인터페이스에서 모델링 한 것 같습니다. –
어쩌면 인간 친화적일까요? 또한 Java의 정규 표현식 Matcher 그룹은 첫 번째로 일치하는 그룹으로 1부터 시작합니다.
전체 일치를 의미하는 0으로 정규 표현식의 표준입니다. – Eclipse
개인적으로 나는 나쁜 디자인으로 이것을 칠할 것입니다.
JDBC와 ODBC는 모두 X/Open Call Level Interface를 기반으로합니다. 따라서 0을 기준으로 한 월별 숫자와 같이 Java 이전의 기록입니다.
이것은 약자를 제거하기 위해 원어 디자이너가 만든 음모의 일부입니다. 원래 스펙에서 배열은 -1부터 번호가 매겨졌고 길이가 0 인 요소가 1 개 나열되었습니다.
오늘 자바 악성 캘린더 API 만이 악마 같은 음모로 남아 있습니다.
특히 ResultSets가 1- 색인이므로 동일한 문제가 궁금합니다. – Uri