Java 操作位于程序文件夹中的SQLite数据库

Java 操作位于程序文件夹中的SQLite数据库,java,sqlite,exception,Java,Sqlite,Exception,我来自MySQL,我试着学习一些SQLite。我手动创建了一个数据库,并将它放在ProgramFiles(x86)文件夹中。 连接没有错误,但当我创建表时,它会给我以下错误: org.sqlite.SQLiteException: [SQLITE_CANTOPEN] Unable to open the database file (unable to open database file) at org.sqlite.core.DB.newSQLException(DB.java:909)

我来自MySQL,我试着学习一些SQLite。我手动创建了一个数据库,并将它放在ProgramFiles(x86)文件夹中。 连接没有错误,但当我创建表时,它会给我以下错误:

org.sqlite.SQLiteException: [SQLITE_CANTOPEN]  Unable to open the database file (unable to open database file)
at org.sqlite.core.DB.newSQLException(DB.java:909)
at org.sqlite.core.DB.newSQLException(DB.java:921)
at org.sqlite.core.DB.execute(DB.java:825)
at org.sqlite.core.CoreStatement.exec(CoreStatement.java:75)
at org.sqlite.jdbc3.JDBC3Statement.execute(JDBC3Statement.java:61)
at SQLite.createDatabase(SQLite.java:15)
at Main.main(Main.java:6)
这是我的代码:

    Connection cn;  
    try {
        cn = DriverManager.getConnection("jdbc:sqlite:C:\\Program Files (x86)\\CodFiscExtractor\\database.db");
        Statement stmt = cn.createStatement();
        stmt.execute("CREATE TABLE IF NOT EXISTS warehouses (\n"
            + " id integer PRIMARY KEY,\n"
            + " name text NOT NULL,\n"
            + " capacity real\n"
            + ");");

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

我该怎么办?

您的问题似乎最终是权限问题。这是windows的内部问题。。。 您可以使用管理员权限启动java程序来修复此错误。或者,只需将本地数据库存储在另一个路径中

在连接到数据库之前仍然加载驱动程序:

Class.forName("org.sqlite.JDBC");

您是否用
Class.forName(“org.sqlite.JDBC”)加载了db驱动程序?问题似乎是权限问题。此操作需要管理员权限。将数据库存储在不同的路径中应该可以解决此问题。。。