вставить BLOB-объект в SQLite 3 с C - PullRequest
0 голосов
/ 01 декабря 2018

Итак, я пытаюсь сохранить в базе данных большой двоичный объект, но он ничего не вставляет.Я проверил ошибки возврата и всегда получаю «ошибка 0: не ошибка»

Я использую пример sqlite3.org для управления BLOB-объектами: https://www.sqlite.org/cvstrac/wiki?p=BlobExample

В любом случае, здесь точнокод, может быть, я что-то забыл.

int Database::insertToDatabase(
const int zKey,              /*Id of row */
const unsigned char *zBlob,    /* Pointer to blob of data */
int nBlob,                     /* Length of data pointed to by zBlob */
){
char zSql[kMaxSqlFunctionSize];
snprintf(zSql, kMaxSqlFunctionSize, "INSERT INTO RECTS(ID,DATA)VALUES(%d,?)",zKey);
sqlite3_stmt *pStmt;
int rc;

do {
rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, NULL);
if( rc!=SQLITE_OK ){
  return rc;
}
sqlite3_bind_blob(pStmt, 1, zBlob, nBlob, SQLITE_STATIC);
rc = sqlite3_step(pStmt);
assert( rc!=SQLITE_ROW );

rc = sqlite3_finalize(pStmt);

} while( rc==SQLITE_SCHEMA );

return rc;
}

Я использую sqlite_open_v2, чтобы открыть базу данных, и таблицы созданы правильно (проверено с sqlite studio), но я не знаю, почему я не могу заставить эту вставку работать,(данные, которые я пытаюсь вставить, не больше 1 КБ).Заранее спасибо.

...