2016-07-02 17 views
1

Ich habe eine SQLite-Datenbank von Navicat erstellt wird, enthält Tabelle EDITED_PHOTOS und diese Tabelle hat zwei Spalten genannt:Insert UIImage in der Datenbank mit FMDB

1- ID, die primären integer und Autoinkrement ist.

2- Bildtyp ist blob

enter image description here

Zuerst habe ich die UIImage in NSData ungeöffneten bin Umwandlung und dann FMDB Datenbankwarteschlange unter Verwendung der Abfrage in Block auszuführen.

let imageToData = UIImagePNGRepresentation(image) 
    queue!.inTransaction { db, rollback in 

     do { 

      let value = try db.executeQuery("INSERT INTO EDITED_IMAGES VALUES (?,?)", values: ["\'NULL\'",imageToData!]) 

      print(value) 

     }catch { 


     } 

    } 

Die Insert-Anweisung wird ausgeführt und gibt FMResultSet ohne Fehler. der Pfad der Datenbank ist korrekt und die Tabelle wird gefunden, aber die Einfüge-Abfrage wird nicht richtig eingefügt? aber es erzeugt keinen Fehler?

Ich habe die Datenbank auf dem Gerät nach dem Ausführen der Einfügung durch Herunterladen des Anwendungscontainers von Xcode überprüft, die Tabelle ist leer von Datensätzen. oder Auch indem Sie die Anzahl der Datensätze in der Tabelle programmgesteuert überprüfen.

Mein nächster Versuch, die Abfrage einfügen wird executeStatements verwenden, so was ich getan habe ist folgendes:

let value = db.executeStatements("INSERT INTO EDITED_IMAGES VALUES (\'NULL\',\(imageToData!))") 

Seit NSData Darstellung dieser ähnlich ist: <89504e47 0d0a1a0a 0000000d .............>

Ausführen dieser Abfrage einen Fehler generiert: Error inserting batch: near "<": syntax error

Ich habe versucht, FMDatabase ohne Warteschlange zu verwenden, aber es hat genau das gleiche Problem.

Antwort

-1

Sie können LOAD_FILE verwenden ('/ dir/path/hello.png') Sie auch

INSERT INTO xx_BLOB (ID, BILD) VALUES (1, LOAD_FILE ('/ dir/Pfad verwenden können/hallo .png '));

+0

Können Sie mit mehr Details klären? es ist nicht sehr klar, wie man das benutzt? So etwas gibt es bei LOAD_FILE nicht? – AaoIi