2012-01-11 150 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,所以你不能修改您的数据库。