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中的更新错误的主要内容,如果未能解决你的问题,请参考以下文章
MyEclipse和Eclipse 编译错误 web项目中的 js,jsp报错 更改
用eclipse中的web page editor打开jsp页面报错