在Java Dynamic Web Project中保留sqlite db文件的位置?

时间:2013-12-28 17:40:13

标签: java sqlite

我想在Sqlite db中使用Dynamic Web Project。我正在使用sqlite4java来连接数据库。我已经创建了一个db文件,现在尝试从我的Dynamic Web Project访问它。代码是这样的 -

    StringBuilder res = new StringBuilder();
    SQLiteConnection db = null;
    SQLiteStatement st = null;
    try {
        db = new SQLiteConnection(new File("dbfile.dbf"));
        db.open();
        st = db.prepare("SELECT * FROM tbl_Tblsignscores");
        // st.bind(1, minimumQuantity);
        while (st.step()) {
            res.append(String.format("ID: %d, Score: %d \n",
                    st.columnInt(0), st.columnInt(1)));
            // orders.add(st.columnLong(0));
        }
    } catch (Exception ex) {

    } finally {
        st.dispose();
        db.dispose();
    }
    return res.toString();

但是连接始终在db.open()处失败。它表示Nullpointerexception。我尝试将dbfile放在web-inf>libweb-int项目根目录中,但似乎没有任何效果。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

我也像你的ploblem。我用自己的解决方案修复了它,但我不确定它是不是很好的解决方案。解决方案是使用class-path

Web应用程序目录struture

- app-root
    - WEB-INF
        - classes
            - mydb.db

程序

protected Connection getConnection() {
    Connection con = null;
    try {
        Class.forName("org.sqlite.JDBC");
        con = DriverManager.getConnection("jdbc:sqlite:" + this.getClass().getResource("/").getPath() + "/mydb.db");
    } catch (Exception e) {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
    }
    return con;
}

现在,我不需要担心丢失db文件。它在我的类路径目录中是肯定的。