Индекс 0 находится вне диапазона - PullRequest
0 голосов
/ 23 марта 2012

Я получаю исключение 'Индекс 0 вне диапазона' в следующем блоке try-catch, но я не могу на всю жизнь выяснить, где выбрасывается исключение?

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("---------------------------------------------");
    }

Спасибо всем, кто взглянул на это и, возможно, указал мне правильное направление!

Ответы [ 5 ]

3 голосов
/ 23 марта 2012

Индексы для параметров в PreparedStatement начинаются с 1, а не с 0.

Итак, первый параметр имеет индекс 1. Если вы попытаетесь использовать 0 в качестве индекса, он пожалуется, что это недопустимый индекс.

3 голосов
/ 23 марта 2012

PreparedStatement индексы параметров начинаются с 1 - так что вы, вероятно, просто хотите

setString(j + 1, params[j]);

и т.д.

1 голос
/ 23 марта 2012

попробуйте использовать

System.out.println("Problem constructing callableStatement: "+e.getMessage);

, чтобы узнать трассировку стека и строку "проблема" кода.

1 голос
/ 23 марта 2012

Индекс первого параметра равен 1, а не 0

0 голосов
/ 23 марта 2012

} else if (paramTypes[j]

Разве это не должно быть params[ j ]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...