JSP,eclipse中的更新错误

Posted

技术标签:

【中文标题】JSP,eclipse中的更新错误【英文标题】:updating error in JSP, eclipse 【发布时间】:2010-11-04 09:04:13 【问题描述】:

- 无法发出数据操作 带有 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)

【问题讨论】:

【参考方案1】:

使用INSERT/UPDATE/DELETE时必须调用executeUpdate(),而不是executeQuery()

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

【讨论】:

【参考方案2】:

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

这个方法调用实际上会给你带来麻烦:

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

寻找发送更新语句的替代方案(其实我不知道你这里用的是什么API)

【讨论】:

以上是关于JSP,eclipse中的更新错误的主要内容,如果未能解决你的问题,请参考以下文章

jsp报错,有个叉号

MyEclipse和Eclipse 编译错误 web项目中的 js,jsp报错 更改

用eclipse中的web page editor打开jsp页面报错

eclipse运行JSP文件时出现的,是啥错误,如何解决

使用eclipse运行JSP文件时怎么总是弹出Problem Occurred错误?

神秘的 Eclipse JSP 验证错误