这是Java里写的
for (int i = 0; i < list.size(); i++) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
con = kai();
try {
String sql = "update (select * from hz_cjhs t where t.name=? and webnum=?) t set t.chengji=?,t.hege=? where t.kaoshiname=?;";
ps = con.prepareStatement(sql);
ps.setString(1, list.get(i).getName());
ps.setString(2, list.get(i).getWebNum());
ps.setDouble(3, list.get(i).getChengJi());
ps.setInt(4, list.get(i).getHeGe());
ps.setString(5,list.get(i).getKaoShiName());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();这是报错信息
java.sql.SQLException: ORA-00911: 无效字符 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:590)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1973)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1119)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2191)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2064)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2989)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:658)
at com.daoimpl.KaoShiChengJiDaoImpl.updateChengJi(KaoShiChengJiDaoImpl.java:92)
at com.biz.ChengJiBiz.SetRenYuanCJ(ChengJiBiz.java:95)
at com.servlet.CJServlet.doGet(CJServlet.java:34)
at com.servlet.CJServlet.doPost(CJServlet.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service[size=24px]
(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)[/size]

解决方案 »

  1.   

    ORA-00911: 无效字符
      

  2.   


    你的语句明显在数据库也执行不了的吧      看你的意思应该是要这样子的吧  
    update hz_cjhs  t set t.chengji=?,t.hege=? where t.name=? and webnum=? and t.kaoshiname=?
    而且建议把
    Connection con = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    con = kai();
    这段定义放到循环外面出来
      

  3.   

    请不要加 分号在sql语句中