1

我有一个带有已使用 SqlCipher (net.sqlcipher.database.SQLiteOpenHelper) 加密的数据库的 Android 项目。这一切正常,我可以通过桌面上的 DB 浏览器访问解密的数据。

但是,我有一个服务器端 Maven 项目(可以是任何项目,但这是一个 Maven 项目),它必须进一步处理数据。

我的问题是:如何解密数据以在 Java/Maven 项目中进行处理?

举一个代码示例,我目前这样访问数据库:

try {
        Class.forName("org.sqlite.JDBC");
        c = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Username\\Desktop\\"+path);
    }
    catch (Exception e) {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
    }
    return c;

我使用这样的结果集:

ResultSet myGet(Connection db, String sql){
    try {
        return db.createStatement().executeQuery(sql);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

在加密数据库之前,上面的方法可以工作,但现在显然不行。我收到以下错误:

org.sqlite.SQLiteException: [SQLITE_NOTADB]  File opened that is not a database file (file is not a database)
4

1 回答 1

0

如果您使用的是 JDBC,您将需要专门构建的支持 SQLCipher 的驱动程序。SQLCipher Enterprise Program提供了这样的驱动程序。

于 2020-08-27T13:00:12.607 回答