2017-06-09 3 views
0

Ich versuche, ein Stück von Bytes in eine SQLite3-Datenbank einfügen, mit github.com/mattn/go-sqlite3.Einfügen von Byte-Slice in sqlite-Blob

Daten:

thmbnail := [255 216 255 219 0 132 ...] 

erstellen Anweisung:

sqlStmt := ` 
create table result (id INTEGER NOT NULL PRIMARY KEY, fname TEXT, path TEXT, 
size INTEGER, fMDate TEXT, fUUID TEXT, fSHA1 TEXT, fPRONOM TEXT, fNSRL INTEGER, fTHMB BLOB); 
pragma journal_mode=WAL; 
delete from result; 
` 

Insert:

func addEntryDB(stmt *sql.Stmt, entry fileMD) { 

    _, err := stmt.Exec(nil, entry.fName, entry.fPath, entry.fSize, entry.fMDate, 
    entry.fUUID, entry.fSHA1, entry.fPRONOM, entry.fNSRL, entry.fTHMB) 
    if err != nil { 
     log.Fatal(err) 
    } 
} 

Problem: Es werden nur die ersten vier Bytes von thmbnail eingeführt werden. Ich nehme an, dass dies mit dem 0-Byte an der fünften Position zusammenhängen könnte.

Wie kann das ganze [] Byte eingefügt werden?

+0

Dies könnte verwandt sein. Aber der Fehler sollte behoben werden https://stackoverflow.com/questions/29452538/convert-blob-to-image-in-go – Steffen

Antwort

0

Ich habe das Problem gefunden. Es saß vor dem Monitor. Die Daten wurden tatsächlich eingefügt. Der SQLite-Client behandelt den Blob als Text und beendet das Drucken bei der "0". Bei der Überprüfung der Datenbank mit sqlitebrowser wurde der vollständige Eintrag angezeigt.