2014-02-21 40 views
0

我是Java編程的完全新手,但我正在努力。我已經搜索了很多,但我無法弄清楚,即使許多初學程序員同樣遇到同樣的問題。MySQL查詢在PhpMyAdmin中可用,但不能在JAVA中使用Eclipse

我有這個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表名 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

YEAH !!!!我GOOGLE了你的意思,它的工作!非常感謝!!!! – Arjen

+0

不知道Java(多年未觸及它),但createStatement/execute在這裏使用的是否支持單個執行中的多個SQL語句? – Kickstart

回答

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); 
} 
相關問題