Sto lavorando allo sviluppo di un'API C++ che utilizza plug-in personalizzati per interfacciare con diversi motori di database utilizzando le loro API e la specifica sintassi SQL .SQLite3: Inserisci BLOB con caratteri NULL in C++
Attualmente, sto cercando di trovare un modo di BLOB inserimento, ma dal momento che è NULL
il carattere di terminazione in C/C++, il BLOB viene troncato quando si costruisce la INSERT INTO stringa di query. Finora, ho lavorato con
//...
char* sql;
void* blob;
int len;
//...
blob = some_blob_already_in_memory;
len = length_of_blob_already_known;
sql = sqlite3_malloc(2*len+1);
sql = sqlite3_mprintf("INSERT INTO table VALUES (%Q)", (char*)blob);
//...
Mi aspetto che, se è a tutto il possibile per farlo nella console interattiva SQLite3, dovrebbe essere possibile costruire la stringa di query con correttamente sfuggito NULL
caratteri. Forse c'è un modo per farlo con SQL standard che è anche supportato dalla sintassi SQLite SQL?
Sicuramente qualcuno deve aver affrontato la stessa situazione prima. Ho cercato su Google e trovato alcune risposte, ma in altri linguaggi di programmazione (Python).
Grazie in anticipo per il vostro feedback.
[Questa] (http://www.sqlite.org/c3ref/bind_blob.html) pagina sembra elencare tutte le funzioni necessarie. – zvrba