Search code examples
iphoneobjective-csqliteblobnsdata

Retrieve nsdata from sqlite stored in Blob data type for iPhone App


In iPhone App how to store UIImage converted into NSData to sqlite table in BLOB datatype? Is there any kind of binding needed(NSData ->Blob)?

or

While retrieving image stored in NSData form in sqlite Blob datatype, should I need to perform any task to convert that stored database in blob datatype to get back into NSData form?

Please help and suggest.


Solution

  • I used something like this:

    // prepare sqlite3 statement before this line
    int res = sqlite3_step(stmt);
    if (res == SQLITE_ROW) {
        const void *ptr = sqlite3_column_blob(stmt, 0);
        int size = sqlite3_column_bytes(stmt, 0);
        data = [[NSData alloc] initWithBytes:ptr length:size];
        sqlite3_reset(stmt);
    
        return [data autorelease];
    } 
    sqlite3_reset(stmt);
    

    For saving as blob you can extract pointer and size of NSData using [data bytes] and [data length]. And then bind to your BLOB row

    sqlite3_bind_blob (stmt, 2, [data bytes], [data length], SQLITE_TRANSIENT);