MySQL Query在PhpMyAdmin中工作,但在JAVA Eclipse中不起作用

时间:2014-02-21 14:15:54

标签: java mysql eclipse phpmyadmin

我是Java编程的新手,但我正在挣扎。我已经进行了广泛的搜索,但即使许多初学者程序员遇到同样的问题,我也无法弄明白。

我有这个Java<> MySQL问题,我无法绕过它!

如果我在phpMyAdmin中执行此查询:

SET count = 0; UPDATE tablename SET table_id = count:= count + 1;  
ALTER TABLE tablename AUTO_INCREMENT = 1;

它按照我想要的方式工作,重置ID(删除一行后)它可能不是最优雅的解决方案,但它可以完成工作。

但是一旦我从eclipse执行相同的查询,我的控制台就会像圣诞树一样点亮,然后我得到了:

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,用于在'UPDATE附近使用正确的语法   tablename SET table_id = @count:= @count + 1; ALTER TABLE tablename   AU'在第1行

错误...检查我的语法。它适用于phpMyAdmin。 我的Eclipse Java方法:

public void resetDBID(){
    try{
        // query to reset menu_id manly after delete row
        Statement statement = con.connection.createStatement();
        String sset;
        sset =  "SET @count = 0; "
                + "UPDATE afhaalmenus SET menu_id = @count:= @count + 1; "
                + "ALTER TABLE afhaalmenus AUTO_INCREMENT = 1;";

        statement.execute(sset);

    } catch(SQLException ex){
        String message = "rest ID fail";
        JOptionPane.showMessageDialog(null, message, "method fail", JOptionPane.INFORMATION_MESSAGE);
        ex.printStackTrace();
    }
}

我在这里失踪的是什么?或做错了...... 在此先感谢您的所有帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用addBatch

String s1 = "SET @count = 0";
String s2 = ...

try {
// query to reset menu_id manly after delete row
     connection = database.getConnection();
     Statement statement = connection.createStatement();
     statement.addBatch(s1);
     statement.addBatch(s2);    
     statement.addBatch(s2);   
     s.executeBatch();
     connection.commit();
} catch (SQLException e) {
    connection.rollback();
    throw e;
} finally {
    close(statement);
    close(connection);
}