通过Java jdbc odbc连接到Access文件时“超出系统资源”

时间:2012-01-11 19:22:27

标签: java ms-access jdbc resources odbc

我已经阅读了所有“超出系统资源”的帖子,但这与他们完全不同。 我花了最近3个小时寻找解决方案。 我没有很多连接/语句/结果集,我总是关闭它们。 我的代码曾经工作但现在我得到了“超出系统资源”的异常,而不是在查询期间,但 当我尝试连接 时。 我没有改变我的代码,但它现在不起作用,除了我尝试它的10次中有10次。我试图改变其中的一些东西,但没有区别。 我的Access文件是15 - 50 MB。 我的代码是:

private String accessFilePath;
private Connection myConnection;
public boolean connectToAccess(String myAccessFilePath) {
    accessFilePath = myAccessFilePath;
    //Get connection to database
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        // set properties for unicode
        Properties myProperties = new Properties();
        myProperties.put("charSet", "windows-1253");
        myConnection = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + accessFilePath, myProperties); // I get the exception here
    } catch (Exception ex) {
        System.out.println("Failed to connect to " + accessFilePath + " database\n" + ex.getMessage());
        return false;
    }
    return true;
}

现在与其他时间有什么不同? Access文件是否保持以前的连接打开?这可能有什么问题?

1 个答案:

答案 0 :(得分:6)

好的,我找到了解决方案。 起初我开始了一个新的java项目并在那里复制了相同的代码行。 每次我在新项目中尝试连接时,我都成功连接到我的文件。 所以它让我感到震惊。我查看了我的VM设置。 在我的原始程序 我将很多内存分配给虚拟机 ,因此即使单个文件连接也没有内存。

我的设置是 - > VM选项:-Xmx1536m -Xms768m(有点过分)

我将其更改为 - > VM选项:-Xmx512m -Xms256m

它有效。谢谢您的意见。 我希望这有助于其他人,因为我花了很多时间才找到它。