SQLCipher for React Native provides full database encryption for cross-platform React Native applications targeting iOS, Android, and Windows. This SQLCipher package provides an officially supported way to quickly and easy integrate SQLCipher’s AES-256 full database encryption into React Native apps. The API is based on and generally compatible with the popular react-native-sqlite-storage
package. Plus it is fully interoperable with other SQLCipher platform libraries, and no special knowledge of cryptography is required. Let SQLCipher take care of data security behind the scenes with a small footprint and great performance.
Support for React Native is available only with the Enterprise Edition of SQLCipher.
Contact Us about SQLCipher for JDBC
Initialize database connection:
class AppDatabase {
db: SQLiteDatabase | null;
promiseEnabled = false;
dbName: string = "test.db";
args = {
name: this.dbName,
dblocation: "default",
license: "YOUR LICENSE CODE GOES HERE",
password: "secure-key-material",
preKey: [],
postKey: [],
readOnly: false,
};
constructor(){
DEBUG(true);
}
public async openDatabaseConnectionPromise() {
console.log("Entered openDatabaseConnectionPromise");
let openArgs = Object.assign({}, this.args);
this.db = await openDatabase(openArgs).catch(e => {
console.error("Failed to open database connection: " + e);
});
// or
// await openDatabase(openArgs)
// .then( value => {
// this.db = value;
// console.log("[SUCCESS] Database opened");
// })
// .catch(e => {
// console.error("Failed to open database connection: " + e);
// });
}
Create a table and insert data:
// Create table (if neccessary) and insert data in transaction
result = new TestResult("Create table/insert data in transaction");
await this.db.transaction((tx) => {
tx.executeSql("CREATE TABLE IF NOT EXISTS t1(a,b);", [])
.then((args) => {
let msg = "Created t1 table if needed";
console.log(msg);
result.logSuccess(msg);
}).catch(e => {
var msg = "An error occurred creating t1: " + e;
console.error(msg);
result.logError(msg);
});
tx.executeSql("INSERT INTO t1(a,b) VALUES(?,?);", [1, 2])
.then((args) => {
let message = "Inserted into t1 table";
console.log(message);
result.logSuccess(message);
}).catch(e => {
var msg = "An error occurred inserting into t1: " + e;
console.error(msg)
result.logError(msg);
});
});
values.push(result);
Executing a query:
// // Query all rows from t1
result = new TestResult("Query all rows from t1");
var results = await this.db.executeSql("SELECT * from t1 order by rowid;", []);
if(results != null){
var rowResult = results;
var rowResults: string[] = [];
var rows = rowResult.rows.length;
for(var row = 0; row < rows; row++){
var a = rowResult.rows.item(row).a;
var b = rowResult.rows.item(row).b;
rowResults.push(`a:${a}, b:${b}`);
}
result.logSuccess(...rowResults);
}
values.push(result);