テーブルを生成し、そのテーブルにデータを挿入しています。テーブルは、複雑な関係を持つデータから作成されます。これは、BIツールのユーザーがデータを簡単に処理できるようにするために作成されました。
これらのテーブルはたくさんあり、それぞれがユーザー生成データに基づいて異なります。あるケースでは、インデックスが範囲外の例外を取得しています。メタデータを検査するとき、それは範囲外ではありません。
正確な例外メッセージは次のとおりです。
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 = false
それが失敗したとき、私は挿入ステートメントからメタデータを出力し、これを取得しました:
parameterMetaData.getParameterCount()= 13
ColIndex-タイプ|| クラス
1 --int || java.lang.Integer
2-int || java.lang.Integer
3-int || java.lang.Integer
4-日時|| java.sql.Timestamp
5-日時|| 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 index 13を設定しようとすると、Index Out Of Rangeが表示されますが、メタデータによると存在します。それが存在しなかった場合、別の範囲外の例外が発生します。
同じコードが異なるデータセットに対して機能します。
列インデックスが存在するときにこのエラーが発生する理由を誰かが説明できますか?