У меня проблема в CallableStatement, который выполняет запрос хранимой процедуры, который принимает параметр.
У меня есть список строк, содержащих такой запрос:
{call query5_immatricolati(?)}
У меня есть список строк, содержащих параметр типа
String cds = "L-INF";
У меня нет синтаксической ошибки SQL при запуске, но набор результатов не имеет никакого значения.
Ожидаемый результат исполнение состоит в том, что я мог создать объект, получив данные из набора результатов.
Вот код:
for (int i = 0; i < INDICATORI.getInstance().getListaIndicatori().size();) {
for (int j = 0; j < INDICATORI.getInstance().getListaQuery().size();) {
if (INDICATORI.getInstance().getListaIndicatori().get(i).equals("iC00a")) {
for (String cds : CDS.getInstance().getCds().values()) {
ArrayList<indicatore> lista = new ArrayList<indicatore>();
String query = INDICATORI.getInstance().getListaQuery().get(j);
try {
CallableStatement cb = DB.getInstance().getConnection().prepareCall(query);
cb.setString(1, cds);
DB.getInstance().setResultSet(cb.executeQuery());
} catch (SQLException e) {
e.printStackTrace();
}
try {
while (DB.getInstance().getResultSet().next()) {
iC00a obj = new iC00a();
obj.setId(counter);
obj.setAnnoIscrizione(DB.getInstance().getResultSet().getString(1));
obj.setIscrittiPrimoAnno(DB.getInstance().getResultSet().getInt(2));
lista.add(obj);
counter++;
}
} catch (SQLException e) {
e.printStackTrace();
}
map.getInstance().getMap().put(INDICATORI.getInstance().getListaIndicatori().get(i)+cds, lista);
counter=0;
}
}
i++;
j++;
}
}
Я пытался вручную установить в cb.setString (1, cds ) значение, подобное cb.setString (1, "L-INF"), И ЭТО РАБОТАЕТ !!!
Но я не могу установить параметр вручную, мне нужно выполнить итерацию для каждого l oop каждого строка и динамически вставить в качестве параметра.
Почему, если я устанавливаю параметр вручную как строку, он работает вместо этого, если я не указываю строковую переменную?
Может ли кто-нибудь сказать мне, что я делаю неправильно ?