我手里正在開(kāi)發(fā)的項(xiàng)目需要用到數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行處理季研,但是在實(shí)現(xiàn)修改已存圖片功能的時(shí)候發(fā)現(xiàn)UPDATE 操作之后再讀取修改過(guò)的二進(jìn)制數(shù)據(jù)時(shí)返回nil揽涮。
經(jīng)過(guò)一段時(shí)間研究我發(fā)現(xiàn)FMDB中處理INSERT時(shí)會(huì)調(diào)用到下面的方法
- (void)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt {
if ((!obj) || ((NSNull *)obj == [NSNull null])) {
sqlite3_bind_null(pStmt, idx);
}
// FIXME - someday check the return codes on these binds.
else if ([obj isKindOfClass:[NSData class]]) {
sqlite3_bind_blob(pStmt, idx, [obj bytes], (int)[obj length], SQLITE_STATIC);
} ......
通過(guò)這句標(biāo)準(zhǔn)sqlite語(yǔ)句 才能有效的將二進(jìn)制信息保存到數(shù)據(jù)庫(kù)
sqlite3_bind_blob(pStmt, idx, [obj bytes], (int)[obj length], SQLITE_STATIC);
但是我發(fā)現(xiàn)如果使用UPDATE語(yǔ)句并沒(méi)有調(diào)用上面的方法鞋仍,所以二進(jìn)制數(shù)據(jù)更新會(huì)出錯(cuò)约计,由于本人對(duì)數(shù)據(jù)庫(kù)并沒(méi)有過(guò)多研究并且項(xiàng)目時(shí)間較緊,所以最后選擇了刪除再插入新數(shù)據(jù)的笨方法來(lái)解決問(wèn)題惜姐。