我在下面的try-catch块中得到一个'索引0超出范围'异常,但我不能在我的生活中找出异常被抛出的位置?
try{
cs = this.con.prepareCall("{call "+storedProcName+"("+procParams+")}");
for(int j = 0; j < params.length; j++){
if (paramTypes[j].equalsIgnoreCase("Int")) {
int x = 0;
try{
x = Integer.parseInt(params[j]);
} catch(Exception e) {}
cs.setInt(j, x);
} else if (paramTypes[j].equalsIgnoreCase("Boolean")) {
boolean x = false;
try{
x = (params[j].equalsIgnoreCase("True")) || (params[j].equalsIgnoreCase("T")) || (params[j].equalsIgnoreCase("1")) || (params[j].equalsIgnoreCase("Yes")) || (params[j].equalsIgnoreCase("Y"));
} catch(Exception e) {}
cs.setBoolean(j, x);
} else if (paramTypes[j].equalsIgnoreCase("String")) {
cs.setString(j, params[j]);
}
}
}catch(Exception e){
System.out.println("---------------------------------------------");
System.out.println("Problem constructing callableStatement: "+e);
System.out.println("---------------------------------------------");
}
感谢有人看过这个,并指出我正确的方向!
答案 0 :(得分:3)
PreparedStatement
中参数的索引从1开始,而不是从0开始。
所以第一个参数有索引1.如果你尝试使用0作为索引,它会抱怨这不是一个有效的索引。
答案 1 :(得分:3)
答案 2 :(得分:1)
第一个参数的索引是1,而不是0
答案 3 :(得分:1)
尝试使用
System.out.println("Problem constructing callableStatement: "+e.getMessage);
找出堆栈跟踪和&#34;麻烦&#34;代码行。
答案 4 :(得分:0)
} else if (paramTypes[j]
不应该是params[ j ]
?