2012-01-11 33 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 =がデータベース文字列で真ですか?私はこれを取り除くことによって試みるだろう。 – kosa

答えて

5

あなたはこのように接続されています

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

あなたはtrueに属性READONLYセットを持っているので、あなたがあなたのデータベースに変更を加えることはできません。