解决方案 »

  1.   

    那你JAVA报啥错啊,JAVA连接上来也是发相同的代码给MYSQL吗。
      

  2.   

    这是报错信息 提示的是sql语句有问题:
    java.sql.SQLException: You have an error in your SQL syntax; check the manual th
    at corresponds to your MySQL server version for the right syntax to use near 'UP
    DATE scorelist SET rank= (@mycnt := @mycnt + 1)  ORDER BY score DESC' at line 1
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
            at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
            at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
            at com.mysql.jdbc.Connection.execSQL(Connection.java:2994)
            at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
    va:936)
            at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
    1030)
            at com.single.dao.ScoreDao.Rank(ScoreDao.java:174)
            at com.single.manager.ScoreManager.updateScore(ScoreManager.java:42)
            at com.single.servlet.RecordScoreServlet.doPost(RecordScoreServlet.java:
    52)
            at com.single.servlet.RecordScoreServlet.doGet(RecordScoreServlet.java:2
    5)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:304)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:210)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
    alve.java:240)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
    alve.java:164)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
    torBase.java:498)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
    ava:164)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
    ava:100)
            at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
    562)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
    ve.java:118)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
    a:394)
            at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso
    r.java:284)
            at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr
    ocess(Http11AprProtocol.java:322)
            at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin
    t.java:1714)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
    )
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
      

  3.   


    这是报错信息 提示的是sql语句有问题:
    java.sql.SQLException: You have an error in your SQL syntax; check the manual th
    at corresponds to your MySQL server version for the right syntax to use near 'UP
    DATE scorelist SET rank= (@mycnt := @mycnt + 1)  ORDER BY score DESC' at line 1
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
            at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
            at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
            at com.mysql.jdbc.Connection.execSQL(Connection.java:2994)
            at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
    va:936)
            at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
    1030)
      

  4.   

    update scorelist a,(select score,(select count(*) from scorelist where score<=b.score) as r from scorelist b) c
    set a.rank=c.r
    where a.score=c.score
      

  5.   


    老大的方法在mysql可以运行 完全没问题可以在java中报错:请老大看看 谢谢java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
            at com.mysql.jdbc.Statement.checkForDml(Statement.java:298)
            at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:956)
            at com.single.dao.ScoreDao.Rank(ScoreDao.java:174)
            at com.single.manager.ScoreManager.updateScore(ScoreManager.java:47)我的方法是这样写的----------------------------------
    public static ResultSet Rank(Connection con){
    StringBuffer sb = new StringBuffer(" update scorelist a,(select score,(select count(*) from scorelist where score>=b.score) as r from scorelist b) cset a.rank=c.rwhere a.score=c.score" );
    try {
    PreparedStatement pstmt = con.prepareStatement(sb.toString());
    return pstmt.executeQuery();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return null;
    }
    这是调用方法:---------------------------------------------
    public String updateScore(Player player) {
    ResultSet rs = ScoreDao.ScoreList1(con, player);
    JSONArray jsonArray = JsonUtil.formatRsToJsonArray(rs);
    JSONObject json = getDBPlayer(player, jsonArray);
    if (json == null) {
    ScoreDao.PlayerAdd(con, player);
    System.out.println("新用户...第一次录入积分");
    } else {
    ScoreDao.PlayerUpdate(con, player);
    System.out.println("已经上传过积分...覆盖上次积分");
    json.getString("score");
    }
    ScoreDao.Rank(con);   //在这调用方法
    System.out.println("排名已更新");
    return "success";
    }
      
      

  6.   

    感觉 是你JAVA的问题。。你单独在MYSQL都能行。。难道乱码了?
      

  7.   


    上面给出了java代码  
    没有出现乱码 就是运行到 这个方法的时候报错了 好像是不支持这样的写法