更新JSP中的错误,eclipse

时间:2010-11-04 09:04:14

标签: java jsp jdbc


- 无法发布数据操作    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 个答案:

答案 0 :(得分:2)

使用executeUpdate() / INSERT / UPDATE而不是DELETE

时,您必须致电executeQuery()

另请注意,不鼓励在JSP中使用代码,这是一种视图技术。

答案 1 :(得分:1)

您正在使用隐藏的executeQuery调用来更新数据库中的值。这是不允许的(见例外)。

此方法调用实际上会导致您的麻烦:

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

找一个发送更新语句的替代方法(实际上我不知道你在这里使用的是什么API)