【问题标题】:updating error in JSP, eclipseJSP,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)

【问题讨论】:

    标签: java jsp jdbc


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-01
        • 1970-01-01
        • 2014-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-15
        相关资源
        最近更新 更多