sqlite数据库中 保存和读取UIData对象

+ (void)getPersonByID:(int)ID {

    sqlite3 *db = [DB open];

    sqlite3_stmt *stmt = nil;

    int result = sqlite3_prepare_v2(db, "select * from Persons where ID = 1", -1, &stmt, nil);

    if (result == SQLITE_OK) {

        NSData *data = [NSData dataWithBytes:sqlite3_column_blob(stmt, 3) length:sqlite3_column_bytes(stmt, 3)];

    

        UIImage *image = [UIImage imageWithData:data];

    }

}

+ (void)addPersonByPerson:(Person *)person {

    sqlite3 *db = [DB open];

    sqlite3_stmt *stmt = nil;

    int result = sqlite3_prepare_v2(db, "insert into Persons (name, image) values (?, ?)", -1, &stmt, nil);

    

    if (result == SQLITE_OK) {

        sqlite3_bind_text(stmt, 1, "name", -1, nil);

        //参数1.语句对象

        //参数2.?下标,从1开始

        //参数3.传递的字节

        //参数4.字节长度

        //参数5.如果传递字节长度,不是总字节数,执行的操作给nil

        NSData *data = UIImagePNGRepresentation(person.image);

        sqlite3_bind_blob(stmt, 2, [data bytes] , (int)data.length, nil);

    }

}

原文地址:https://www.cnblogs.com/naizui/p/5211589.html