我使用“DB Browser for SQLite”创建了一个SQLite数据库,并使用SQLCipher 3对其进行了加密,但当我执行代码时,数据库无法读取。我解除了加密,它工作了。
如何连接到加密的SQLite数据库?我已经将SQLCipher jar添加到我的构建路径>库中。
错误:打开数据库:'src/database/cryptedDB.db?key=kilikilikoinkoin':文件、目录或卷名语法不正确
代码:
public class DBmanager {
Connection connection;
String database= "jdbc:sqlite:src/database/cryptedDB.db";
private String encryptionKey = "kilikilikoinkoin";
public DBmanager() {
}
public boolean Connect() throws SQLException {
try {
String url = database + "?key=" + encryptionKey;
// Establish the connection with the modified URL
Connection connection = DriverManager.getConnection(url);
if (connection != null && !connection.isClosed()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return false;
}
}
字符串
将URL从?key=
更改为?pragma_key=
不起作用。Eclipse在sqLiteDatabase.rawQuery()
中显示错误,即使我已经添加了SQLCipher,也要更正为“构建路径”。
SQLiteDatabase.loadLibs(); // Load SQLCipher native libraries
SQLiteDatabase sqLiteDatabase = SQLiteDatabase.openDatabase(database, passphrase, null, SQLiteDatabase.OPEN_READWRITE);
long nativeConnectionPtr =sqLiteDatabase.rawQuery("SELECT sqlite3_handle_v2('main');",null).getLong(0);
// Wrap the native connection in a java.sql.Connection object using SQLite JDBC driver
SQLiteConfig config = new SQLiteConfig();
config.setSharedCache(true);
型
1条答案
按热度按时间xv8emn3q1#
使用JDBC库
字符串
然后创建连接
型
另外,确保JDBC连接字符串中包含“file”部分。