Je travaille sur le développement d'une API C++ qui utilise des plugins personnalisés pour interfacer avec différents moteurs de bases de données en utilisant leurs API et la syntaxe spécifique SQL .SQLite3: Insérer BLOB avec des caractères NULL en C++
Actuellement, je suis tenté de trouver un moyen d'insertion BLOBs, mais depuis NULL
est le caractère de terminaison en C/C++, le blob devient tronquée lors de la construction l'INSERT INTO chaîne de requête. Jusqu'à présent, j'ai travaillé avec
//...
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);
//...
Je pense que, si elle est du tout possible de le faire dans la console interactive SQLite3, il devrait être possible de construire la chaîne de requête avec correctement échappé NULL
caractères. Peut-être y a-t-il un moyen de le faire avec le SQL standard qui est également supporté par la syntaxe SQLite SQL?
Certes, quelqu'un doit avoir déjà fait face à la même situation. J'ai googlé et trouvé quelques réponses mais j'étais dans d'autres langages de programmation (Python).
Merci d'avance pour vos commentaires.
Cette page (http://www.sqlite.org/c3ref/bind_blob.html) semble répertorier toutes les fonctions dont vous avez besoin. – zvrba