Domanda

Ho un'applicazione Tcl TK che ha un back-end Sqlite. Comprendo praticamente la sintassi per inserire, manipolare e leggere i dati delle stringhe; tuttavia, non capisco come archiviare immagini o file in Sqlite con Tcl.

So che devo creare una colonna che contiene i dati BLOB in Sqlite. Semplicemente non so cosa fare dal lato Tcl delle cose. Se qualcuno sa come fare o ha un buon riferimento da suggerire per me, lo apprezzerei davvero.

Grazie

Damion

È stato utile?

Soluzione

Nel mio codice, fondamentalmente apro il file come binario, carico il suo contenuto in una variabile Tcl e inserisco quello nel database SQLite. Quindi, qualcosa del genere ...

# load the file's contents
set fileID [open $file RDONLY]
fconfigure $fileID -translation binary
set content [read $fileID}
close $fileID

# store the data in a blob field of the db
$db eval {INSERT OR REPLACE INTO files (content) VALUES ($content)}

Ovviamente, vorrai condire a piacere e la tua tabella conterrà probabilmente colonne aggiuntive ...

Altri suggerimenti

Il comando incrblob assomiglia a quello che desideri: http: // sqlite .org / tclsqlite.html # incrblob

  

Il " incrblob " Metodo

     

Questo metodo apre un canale TCL che   può essere usato per leggere o scrivere in a   BLOB preesistente nel database. Il   la sintassi è così:

dbcmd  incrblob  ?-readonly??   ?DB?  TABLE  COLUMN  ROWID 
     

Il comando restituisce un nuovo canale TCL   per leggere o scrivere su BLOB.   Il canale viene aperto utilizzando   sottostante sqlite3_blob_open ()   Interfaccia C-langauge. Chiudi il   canale usando il comando di chiusura di   TCL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top