Ich arbeite mit SQLCipher, um meine Datenbank in meiner Android-App zu verschlüsseln, stehe aber vor einem Problem, bei dem ich die Datenbank nicht mit der richtigen Passphrase öffnen kann. Wenn ich versuche, die Datenbank abzufragen, stoße ich auf die folgende Ausnahme:
android.database.sqlite.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;
Szenario:
Ich pushe ein Update für eine vorhandene App. Wenn der Benutzer versucht, die App zu aktualisieren und zu installieren, stürzt sie sofort nach dem Start ab.
Hier ist der relevante Codeausschnitt, den ich zum Öffnen der Datenbank verwende:
val passphrase: ByteArray = SQLiteDatabase.getBytes(pw.toCharArray())
val factory = SupportFactory(passphrase)
val db = Room.databaseBuilder(application, AppDatabase::class.java, "TEMPDB")
.openHelperFactory(factory)
.build()
Datenbank-Setup:
Ich verwende SQLCipher zur Verschlüsselung.
Die Datenbankversion ist 4 (databaseVersion = 4).
Beim Debuggen habe ich bestätigt, dass die Passphrase korrekt ist.
Schritte, die ich bereits getan habe Aufgenommen:
Ich habe PRAGMA cipher_migrate hinzugefügt; aber es stürzt immer noch ab.
Ich habe versucht, die Datenbank auf dem Gerät mit dem Gerätedatei-Explorer zu überprüfen, aber ich erhalte die gleiche Fehlermeldung.
Das habe ich überprüft, ob die Datenbankdatei unter /data/data/YOUR_PACKAGE_NAME/databases/ vorhanden ist.
Ich habe versucht, mit verschiedenen Versionen von SQLCipher zu testen, aber ohne Erfolg.
< /ul> Mein Umgebung:
SQLCipher-Version: 4.x
AGP-Version: 8.x.x
Android SDK: SDK 35
Raumdatenbank mit SQLCipher
Öffnen der Datenbank im DB Browser für SQLite mit derselben Passphrase (funktioniert auf einer niedrigeren Version von SQLCipher in Ordnung).
Stellen Sie sicher, dass die Passphrase korrekt ist, indem Sie sie in der App protokollieren (storeHelper.getStoreValue()).
Versuch Migrieren Sie das Datenbankformat, es tritt jedoch immer noch der gleiche Fehler auf.
Ich arbeite mit SQLCipher, um meine Datenbank in meiner Android-App zu verschlüsseln, stehe aber vor einem Problem, bei dem ich die Datenbank nicht mit der richtigen Passphrase öffnen kann. Wenn ich versuche, die Datenbank abzufragen, stoße ich auf die folgende Ausnahme: [code]android.database.sqlite.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;[/code] [b]Szenario:[/b] Ich pushe ein Update für eine vorhandene App. Wenn der Benutzer versucht, die App zu aktualisieren und zu installieren, stürzt sie sofort nach dem Start ab. Hier ist der relevante Codeausschnitt, den ich zum Öffnen der Datenbank verwende: [code]val passphrase: ByteArray = SQLiteDatabase.getBytes(pw.toCharArray()) val factory = SupportFactory(passphrase) val db = Room.databaseBuilder(application, AppDatabase::class.java, "TEMPDB") .openHelperFactory(factory) .build()
[/code] [b]Datenbank-Setup:[/b] [list] [*]Ich verwende SQLCipher zur Verschlüsselung. [*]Die Datenbankversion ist 4 (databaseVersion = 4). [*]Beim Debuggen habe ich bestätigt, dass die Passphrase korrekt ist.
[b]Schritte, die ich bereits getan habe Aufgenommen:[/b]
[*]Ich habe PRAGMA cipher_migrate hinzugefügt; aber es stürzt immer noch ab. [*]Ich habe versucht, die Datenbank auf dem Gerät mit dem Gerätedatei-Explorer zu überprüfen, aber ich erhalte die gleiche Fehlermeldung. [*]Das habe ich überprüft, ob die Datenbankdatei unter /data/data/YOUR_PACKAGE_NAME/databases/ vorhanden ist. [*]Ich habe versucht, mit verschiedenen Versionen von SQLCipher zu testen, aber ohne Erfolg. < /ul> [b]Mein Umgebung:[/b]
[*]SQLCipher-Version: 4.x [*]AGP-Version: 8.x.x Android SDK: SDK 35 [*]Raumdatenbank mit SQLCipher [/list] [list] [*]Öffnen der Datenbank im DB Browser für SQLite mit derselben Passphrase (funktioniert auf einer niedrigeren Version von SQLCipher in Ordnung). [*]Stellen Sie sicher, dass die Passphrase korrekt ist, indem Sie sie in der App protokollieren (storeHelper.getStoreValue()). [*]Versuch Migrieren Sie das Datenbankformat, es tritt jedoch immer noch der gleiche Fehler auf. [/list]
Bei meiner EF6-Nachbildung dieser exemplarischen Vorgehensweise zum Erstellen und Zugreifen auf eine SQLite-Datenbank mithilfe von System.Data.SQLite habe ich festgestellt, dass bei jedem Zugriff auf...
Ich habe versucht, mit der chzn-select-Klasse eine für das Provinz-Dropdown-Menü zu erstellen.
Aber diese Klasse hat dazu geführt, dass mein addEventListener nicht funktioniert. Wenn ich es entferne,...
Ich habe versucht, mit der chzn-select-Klasse eine für das Provinz-Dropdown-Menü zu erstellen.
Aber diese Klasse hat dazu geführt, dass mein addEventListener nicht funktioniert. Wenn ich es entferne,...
Ich habe versucht, mit der chzn-select-Klasse eine für das Provinz-Dropdown-Menü zu erstellen.
Aber diese Klasse hat dazu geführt, dass mein addEventListener nicht funktioniert. Wenn ich es entferne,...