ошибка обновления в JSP, затмение - PullRequest
1 голос
/ 04 ноября 2010

- Невозможно выполнить операторы обработки данных с помощью executeQuery ().


ОБНОВЛЕНИЕ КОДА JAVA

MultiDBManager db8=new MultiDBManager(uif);
String updateString = "UPDATE pklrsc SET pr_prod_rate="+rate+" , pr_ln_cst="+cost+" WHERE pr_rsc_cde= "+component+" ";
db8.execSQL(updateString);

.java КОД ФАЙЛА

    public ResultSet execSQL(String sql) throws SQLException {
    System.out.println("execSQL");
    return super.execSQL(processQuery(sql));
    }

private String processQuery(String sql){
System.out.println("processQuery");
return mdb.getCacheDB().procSQL(sql, false);
}

СООБЩЕНИЕ ОБ ОШИБКЕ

value i: 1
component: ACODE0001
rate: 2.00
cost: 261.22
execSQL
processQuery
Execute = UPDATE c66_p30_BIS.pklrsc SET pr_prod_rate=2.00 , pr_ln_cst=261.22 WHERE pr_rsc_cde= ACODE0001 
Nov 4, 2010 4:54:49 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
 at com.mysql.jdbc.Statement.checkForDml(Statement.java:398)

Ответы [ 2 ]

2 голосов
/ 04 ноября 2010

Вы должны позвонить executeUpdate() при использовании INSERT / UPDATE / DELETE, а не executeQuery()

Также обратите внимание, что использование кода в JSP, который является технологией представления, не рекомендуется.

1 голос
/ 04 ноября 2010

Вы используете скрытый вызов executeQuery для обновления значений в базе данных.Это не разрешено (см. Исключение).

Этот вызов метода на самом деле вызывает ваши проблемы:

mdb.getCacheDB().procSQL(sql, false);

Найдите альтернативу для отправки операторов обновления (на самом деле я не знаю, какой API вы здесь используете)

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