Sqlite C ++ Image to Blob won't store anything

I searched a lot and could not find a solution. I am currently writing an application in Codegear 2007 C ++. I am writing this application for my little kittens, a kind of "dairy product" but I call it KittyBook.

So, I have two tables (sorry, did not understand how CodeBlock):

  • Kitten Information
  • Kitten details.

KittenInfo Stores their names and their identifier (primary key), their gender and their birth. It works.

Another must store blob. Therefore, having tried so many ways. It will not be stored in the table, even other data, if I execute the query with a regular insert, but excluding the blob table.

So, I do not know what I am doing wrong, but for now I love SQLite. Doesn't turn back, huh ??

Function:

void CDatabase::InsertKittenData(int Kitten_ID, int kittenDay, bool DayOrWeek,
    char * kitten_weight, char * Kitten_Comment, string PhotoFile) {

    unsigned char * blob;

    ifstream::pos_type size;
    int size2 = 0;
    if (FileExists(PhotoFile.c_str())) {
        ifstream file(PhotoFile.c_str(), ios::in | ios::binary | ios::ate);
        if (file.is_open()) {
            size = file.tellg();
            blob = new char[size];
            file.seekg(0, ios::beg);
            file.read(blob, size);
            file.close();
        }

    }
    else {
        blob = NULL;
    }
    sqlite3 *dbp;
    sqlite3_stmt *ppStmt;
    // NULL = primary key autoinc.
    char * Sql = "INSERT INTO KittenData VALUES ( NULL, ? , ? ,? , ? , ? , ?);";


    int rc = sqlite3_open("KittyBook.db", &dbp);
    if (rc)
        return;

    if (sqlite3_prepare_v2(dbp, Sql, -1, &ppStmt, NULL) != SQLITE_OK) {
        return;
    }

    if (ppStmt) {
        if (sqlite3_bind_int(ppStmt, 1, Kitten_ID) != SQLITE_OK)
            return;

        if (sqlite3_bind_int(ppStmt, 2, kittenDay) != SQLITE_OK)
            return;
        if (sqlite3_bind_int(ppStmt, 3, DayOrWeek) != SQLITE_OK)
            return;

        if (sqlite3_bind_text(ppStmt, 4, // Index of wildcard
            kitten_weight, strlen(kitten_weight), // length of text
            SQLITE_STATIC) != SQLITE_OK)
            return;
        if (sqlite3_bind_text(ppStmt, 5, // Index of wildcard
            Kitten_Comment, strlen(Kitten_Comment), // length of text
            SQLITE_STATIC) != SQLITE_OK)
            return;

        if (sqlite3_bind_blob(ppStmt, 6, blob, size2, SQLITE_TRANSIENT)
            != SQLITE_OK)
            return;

        if (sqlite3_step(ppStmt) != SQLITE_DONE)
            return;
    }

    sqlite3_finalize(ppStmt);

    sqlite3_exec(dbp, "COMMIT", NULL, NULL, NULL);

    sqlite3_close(dbp);

}
+3
2

size2 :

int size2 = 0;

size2 - blob:

sqlite3_bind_blob(ppStmt, 6, blob, size2, SQLITE_TRANSIENT)

:

, , . : - , .

size2 . , SQLite , , . , , SQLite , , .

, size size2.

0

mu , . , , .

Cheers mu :)

0