Делает ли готовый оператор внутри цикла for с переменными строками запроса каким-то образом его ломает?PreparedStatement не выполняется с правильным запросом
У меня есть это:
if(btn.equals("Continue")){
String[] vals1 = request.getParameterValues("Vals");
String count = "";
queryStr = AniModel.deleteQuery(vals1);
PreparedStatement ps = conn.prepareStatement(queryStr);
int update = ps.executeUpdate();
count = "" + update;
request.setAttribute("query",queryStr);
request.setAttribute("count",count);
RequestDispatcher dispatch = request.getRequestDispatcher("success4.jsp");
dispatch.forward(request, response);
}
Это занимает несколько элементов массива, в котором он использует на вызове DELETE запроса, который я создал:
public static String deleteQuery(String[] title){
String qry="DELETE FROM AnimeDatabase WHERE ";
for(int i=0;i < title.length;i++){
if (i>0) qry += " OR ";
qry += "ANI_TITLE='" + title[i] + "'";
}
return qry;
}
Он получает массив значений из этого:
<%
String[] values = request.getParameterValues("cbg");
int countme=0;
int numb=1;
for(int i=0;i < values.length;i++){
countme++;
numb=countme;
%>
<tr><td><input type="hidden" name="Vals" value="<%out.println(values[i]);%>"id="vs_<%=(numb)%>"><%=values[i]%></td></tr>
<%
}
%>
У этого есть правильный ввод запроса в конце, но его просто не выполняется обновление на базы данных.
EDIT: Я хочу достичь этого, когда я выполняю команду, он выполнит цикл и выполнит инструкции в зависимости от количества значений в массиве до его окончания.
Установите его на conn.setAutoCommit(false);
и разместите conn.commit();
внутри блока кода Продолжить. Все еще не работает.
Где вы принимаете? – JonK
Вы должны называть 'conn.commit();' где-то в вашем коде, чтобы сохранить изменения в базе данных, если вы не вызвали 'setAutoCommit (true)' в соединении. Если вы не вызываете 'conn.commit();' и не включаете автосообщение ... это будет вашей проблемой. – JonK
Я не знаю, где разместить фиксацию. Кроме того, обновлен код. Он просто не выполняет запрос. – Xenos29