2012-01-11 171 views
1

我已經編寫了一個方法來執行刪除MS Access文件中的重複項的查詢。查詢在MS Access中運行時正常工作,但在通過java運行時沒有任何反應。其他查詢使用相同的連接字符串工作。另外一組人的眼睛能看到是什麼導致了這種情況發生?刪除重複方法不會刪除重複項

public static void delete_duplicates() throws Exception{ 

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    String sDBQ = "C:/AW.mdb"; 

    String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + sDBQ + ";DriverID=22;READONLY=true"; 
    Connection conn = DriverManager.getConnection(database ,"","");; 
    Statement stmt = conn.createStatement(); 

    String query = "DELETE "+ 
        "FROM AW " + 
        "WHERE id not in (select min(id) from AW group by Symbol, Direction, START_DT, END_DT)"; 

    System.out.println(query); 

    stmt.executeUpdate(query); 

    stmt.close(); 
} 
+4

爲什麼在數據庫字符串中這個READONLY = true?我會試着去除這個。 – kosa 2012-01-11 02:23:59

回答

5

您正在連接這樣的:

String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + sDBQ + ";DriverID=22;READONLY=true";

你有一個屬性READONLY設置爲true,所以你不能修改您的數據庫。