SQLite – Ist es möglich, ein BLOB über Insert-Anweisung einzufügen?

Ich entwickle eine Android-Anwendung und ich verwende eine Sqlite-Datenbank, um einige Bitmaps zu speichern. Ich möchte, dass einige Bilder automatisch eingefügt werden, wenn der Benutzer die Anwendung installiert.

Ich benutze die SQLiteOpenHelper Klasse wie folgt :

  • Testen Sie, dass Admob vor dem Veröffentlichen arbeitet
  • Ansichten innerhalb einer benutzerdefinierten ViewGroup nicht Rendering nach einer Größenänderung
  • Rücksetzen des Such-Widget (SearchView) -Wert
  • Android Wie Strecken von Zeilen in der Gridview zu füllen Bildschirm?
  • Gibt es eine Bibliothek für Floating Action Buttons (FAB) mit Labels?
  • Fehler beim Ausführen von Android Studio
  • public class DatabaseHelper extends SQLiteOpenHelper { ... DatabaseHelper(Context context, String nameOfDB, int version, String[] scriptSQLCreate, String scriptSQLDelete) { super(context, nameOfDB, null, version); this.scriptSQLCreate = scriptSQLCreate; this.scriptSQLDelete = scriptSQLDelete; } @Override public void onCreate(SQLiteDatabase db) { int numScripts = scriptSQLCreate.length; for(int i = 0; i<numScripts; i++){ Log.i(TAG,"Creating database, executing script " + i); db.execSQL(scriptSQLCreate[i]); } } } 

    Ich möchte eine Konstante an den oben beschriebenen scriptSQLCreate-Parameter übergeben, das wäre so:

     private static final String[] SCRIPT_DATABASE_CREATE = { "create table memes( id integer primary key autoincrement," + + " img blob not null," + + " name text not null unique)" , "insert into memes(img,name) values(BITMAP1,'1.jpg')", "insert into memes(img,name) values(BITMAP2,'2.jpg')", "insert into memes(img,name) values(BITMAP3,'3.jpg')"} } 

    Jede Hilfe wird viel apreciated,

    Thx, Tulio Zahn

  • Android Studio 2.3 Beta 1 + Support 25.1.0 = Vorschau gebrochen
  • Wie passieren Sie benutzerdefinierte Komponenten-Parameter in Java und XML
  • Wie man die Addition oder Entfernung von Android ListView Rows animiert
  • Wie man WhiteList App im Doze-Modus Android 6.0
  • So ändern Sie die Position der Menüpunkte auf der Aktionsleiste
  • Android Native Debug (ndk-gdb) auf HTC Desire: run-as Fehler?
  • 2 Solutions collect form web for “SQLite – Ist es möglich, ein BLOB über Insert-Anweisung einzufügen?”

    Wenn Sie wirklich, wirklich wollen, können Sie ein sehr langes Hex-Literal als Blob-Literal verwenden:

     insert into memes(img, name) values(X'0102030405060708090a0b0c0d0e0f', '1.jpg') 

    Allerdings ist dies in der Regel eine schlechte Idee; Stattdessen gehen wir auf parametrisierte Abfragen . Sie werden es Ihnen erlauben, eine Aussage einmal mit Platzhaltern anstelle von tatsächlichen Werten zu kompilieren und dann oftmals wiederzuverwenden und die Platzhalter nach Bedarf auszufüllen:

     SQLiteStatement p = sqlite.compileStatement("insert into memes(img, name) values(?, ?)"); byte[] data = loadData("1.jpg"); p.bindBlob(1, data); p.bindString(2, "1.jpg"); p.execute(); byte[] data = loadData("2.jpg"); p.bindBlob(1, data); p.bindString(2, "2.jpg"); p.execute(); 

    (Warnung — Code nicht getestet.)

    Im Allgemeinen sollten Sie parametrisierte Abfragen überall verwenden , da sie ein sicherer Weg sind, um SQL-Injection-Attacken zu vermeiden, und sind in der Regel einfacher und klarer. Das Zusammenstellen von SQL-Abfragen durch das Verkleben von Strings zusammen sollte um jeden Preis vermieden werden.

    Ihre Datentabelle hat ein unsichtbares Wort, das man nicht sehen kann. Überprüfe deine db-Datei mit den db-Tools wie navicat für sqlite. Bitte beachten Sie das Fehlerwort in der Tabelle.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.