Java 关闭UCanAccess连接后无法删除数据库文件

Java 关闭UCanAccess连接后无法删除数据库文件,java,jdbc,ucanaccess,Java,Jdbc,Ucanaccess,我使用UCanAccess连接到临时访问文件以读取数据,然后我想删除这些临时文件。但是,我总是得到file.delete()=false 这是我的密码 public class JAccess { static Connection conn; static Statement stat; public static void connect(String DBFilename) { try {used ucanaccess to connect tem

我使用UCanAccess连接到临时访问文件以读取数据,然后我想删除这些临时文件。但是,我总是得到
file.delete()=false

这是我的密码

public class JAccess {
    static Connection conn;
    static Statement stat;

    public static void connect(String DBFilename) {
        try {used ucanaccess to connect temporary access files
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            String DataSource = "jdbc:ucanaccess://" + DBFilename;
            String user = "user";
            String pw = "pw";
            conn = DriverManager.getConnection(DataSource, user, pw);
            stat = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public static void disconnect() {
       try {
            stat.close();
            conn.close();
        } catch (Exception e) {
            System.out.println(e);
        }
        stat = null;
        conn = null;
    }
}


public void SelectTable(String DBFilename) throws SQLException {
    JAccess.connect(DBFilename);
    JAccess.disconnect();
}

public static void main(String[] args) throws SQLException {
.........
    SelectTable(DBFilename);
    File f = new File(DBFilename);
    f.delete();

为什么
f.delete()
失败?

默认情况下,UCanAccess使用
立即删除资源=false打开到数据库文件的连接。在这种情况下,当
java.sql.Connection
关闭时,UCanAccess实际上会在短时间内保持文件句柄和HSQLDB资源打开,以防应用程序想要重新建立到数据库的连接。例如,对于每次操作都打开和关闭数据库连接的ORM,可能会发生这种情况。但是,这也意味着在连接关闭后无法立即删除临时数据库文件,因为UCanAccess仍然打开该文件


如果我们在连接URL中指定了
immediatelyReleaseResources=true
,那么UCanAccess将在
java.sql.connection
关闭后尽快关闭文件句柄并释放HSQLDB资源。这通常是ETL作业和其他需要“一次性”连接到数据库文件的任务的首选行为。

尝试附加
;立即将yreleaseResources=true
添加到连接URL的末尾。Itamar,感谢您的修改。戈德,谢谢你的回答,我会在周一试试。是的,它奏效了,谢谢戈德·汤普森