我正在生成一个表并将数据插入到该表中。该表是根据具有复杂关系的数据创建的。我们创建了这个,以便我们的 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:事故见证=假
当它失败时,我从插入语句中打印出元数据并得到以下信息:
参数MetaData.getParameterCount()=13
ColIndex - 类型 || 班级
1 - 整数 || java.lang.Integer
2 - 整数 || java.lang.Integer
3 - 整数 || java.lang.Integer
4 - 日期时间 || java.sql.时间戳
5 - 日期时间 || java.sql.时间戳
6 - nvarchar || java.lang.String
7 - 整数 || java.lang.Integer
8 - nvarchar || java.lang.String
9 - nvarchar || java.lang.String
10 - 整数 || java.lang.Integer
11 - nvarchar || java.lang.String
12 - 整数 || java.lang.Integer
13 位 || java.lang.Boolean
当我尝试设置 col index 13 时,我得到 Index Out Of Range,但是根据它存在的元数据!如果它不存在,我会得到另一个超出范围的异常。
相同的代码适用于不同的数据集。
谁能解释为什么当列索引存在时会发生此错误?