테이블을 생성하고 해당 테이블에 데이터를 삽입하려고합니다. 테이블은 복잡한 관계가있는 데이터에서 작성됩니다. 우리는 이것을 만들어 BI 도구 사용자가 데이터를 쉽게 다룰 수 있도록했습니다.PreparedStatement throwing 인덱스가 범위를 벗어 났을 때 범위를 벗어났습니다.
생성 된 이러한 테이블은 각각 사용자 생성 데이터에 따라 다르다. 하나의 경우 우리는 범위를 벗어나는 인덱스를 얻고있다. 메타 데이터를 검사 할 때 범위를 벗어나지 않습니다.
정확한 예외 메시지는 다음과 같습니다
com.microsoft.sqlserver.jdbc.SQLServerException: The index 13 is out of range
.
생성 된 삽입 문은 다음과 같습니다
목격 한 사고의 값이 예외를 설정INSERT INTO [F22_AF] ([frcId],[eId],[aId],[dateCreated],[DateofThing],[Wasthisaninjury],[Whowainjured],[WhowainjuredFNAME],[WhowainjuredLNAME],[Whatwasinvolved],[WhatwasinvolvedDATA],[WhatOptionsWereAvailable],[AccidentWitnessed]) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)
가 발생합니다. 값을 설정하려고 할 때 나는 열 인덱스와 값을 인쇄 :
13 : AccidentWitnessed = 거짓
그것이 내가 삽입 문에서 메타 데이터를 인쇄이있어 실패
: - 유형 ||parameterMetaData.getParameterCount()는 13
ColIndex을 = 클래스
1 - int || java.lang.Integer
2 - int || java.lang.Integer
3 - int || java.lang.Integer
4 - datetime || java.sql.Timestamp
5 - datetime || java.sql.Timestamp
6 - nvarchar || java.lang.String
7 - int || java.lang.Integer
8 - nvarchar || java.lang.String
9 - nvarchar || java.lang.String
10 - int || java.lang.Integer
11 - nvarchar || java.lang.String
12 - int || java.lang.Integer
13 비트 || java.lang.Boolean
col 인덱스 13을 설정하려고하면 인덱스가 범위를 벗어나지 만 메타 데이터에 따르면! 그것이 존재하지 않는다면 다른 예외 범위를 벗어날 것이다.
동일한 코드가 다른 데이터 집합에서 작동합니다.
누구든지 열 색인이 존재할 때이 오류가 발생하는 이유를 설명 할 수 있습니까?
0부터 시작한 인덱스를 사용해 보셨습니까? 그리고 그것이 아니라면, 당신이 문장을 만들고 실행하기 위해 사용하는 정확한 코드를 게시해야합니다. –
@MarkoTopolnik Java의'PreparedStatement'에있는 인덱스는 1 기반이므로 문제의 원인이 될 것이라고 기대하지는 않습니다. – Jesper
@Jesper 코드가 없으면 정확히 무슨 일이 일어나는 것인지 추측 할 수 있습니다. 간헐적 인 코드가 1- 기반에서 0- 기반으로 변환되거나 신이 다른 것을 알고있을 수 있습니다. –