2010-11-04 7 views
1

- ne peut pas émettre manipulation déclarations de données avec executeQuery().erreur mise à jour en JSP, Eclipse


UPDATING JAVA CODE

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); 

fichier .java CODE

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); 
} 

MESSAGE D'ERREUR

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) 

Répondre

2

Vous devez appeler executeUpdate() lors de l'utilisation INSERT/UPDATE/DELETE, plutôt que executeQuery()

Notez également que l'utilisation du code dans JSP, qui est une technologie de vue, n'est pas encouragée.

1

Vous utilisez un appel executeQuery masqué pour mettre à jour les valeurs dans la base de données. Ce n'est pas autorisé (voir exception).

Cet appel de méthode provoque réellement votre problème:

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

Trouver une alternative à envoyer des instructions de mise à jour (En fait, je ne sais pas ce que l'API que vous utilisez ici)

Questions connexes