Applicazione Java con Database SQLite operazioni avanzate
Lettura di database in rete
riferimento originale (https://github.com/xerial/sqlite-jdbc/blob/master/Usage.md)
Per inglobare il database nell’applicazione (ad es. File db all’interno di un file jar), si usa la parola chiave ::resource: nel percorso del DB.
Connessione conn = DriverManager.getConnection ("jdbc:sqlite::resource: tuopackage/ese.db");
i Database possono essere accessibili tramite un indirizzo web, in questo modo se l’applicazione viene distribuita, si ha la possibilità di accesso ad un unico DB!
Connessione conn = DriverManager.getConnection ("jdbc: sqlite :: resource: http: //www.miosito.org/.../ese.db ");
Si possono anche configurare connessioni in sola lettura ad esempio:
SQLiteConfig config = new SQLiteConfig ();
config.setReadOnly (true);
config.setSharedCache (true);
config.recursiveTriggers (true);
// … altra configurazione può essere impostata tramite l’oggetto SQLiteConfig
Connessione conn = DriverManager.getConnection (“jdbc: sqlite: sample.db”, config.toProperties ());
Utilizzare database crittografati
Sqlite-jdbc non supporta nativamente la crittografia del DB, ma è necessario un file speciale .dll/.so
Per utilizzare un database crittografato è necessario un driver che supporti il DB crittografato tramite la chiave pragma o la chiave esadecimale pragma, ad es. SQLite SSE o SQLCipher, è anche necessario specificare ii driver tramite referenziamento diretto con il .dll/.so tramite:
-Dorg.sqlite.lib.path =.
-Dorg.sqlite.lib.name = sqlite_cryption_support.dll
Quindi si può specificare la password tramite:
Connessione connessione = DriverManager.getConnection ("jdbc: sqlite: db.sqlite", "", "password");
Binary Passphrase
Se si volesse fornire la password in formato binario, è necessario specificarne sia il modo che il driver .dll / .so. Sono disponibili due diverse modalità:
SSE:
La password binaria viene fornita tramite pragma hexkey = ‘AE …’
SQLCipher:
La password binaria viene fornita tramite pragma key = “x’AE … ‘”
Quindi la modalità al livello di connessione sarà:
Connessione connessione = DriverManager.getConnection ("jdbc: sqlite: db.sqlite? Hexkey_mode = sse", "", "AE ...");