iOS FMDB 無法更新二進位制資料的問題

2022-05-12 13:44:06 字數 1149 閱讀 1543

使用fmdb很方便的實現了(通過資料庫欄位名而不是字段索引)資料的讀取,插入,更新,刪除。但是我在更新時發現通過格式化字元(@「%@」,data/nsdata/)傳入的二進位制資料更新到資料庫後不能顯示。如果使用的時insert 方法能將資訊正確儲存到資料庫重,因為在fmdb中處理insert時會呼叫到下面的方法

- (void)bindobject:(id)obj tocolumn:(int)idx instatement:(sqlite3_stmt*)pstmt 

// fixme - someday check the return codes on these binds.

else if ([obj iskindofclass:[nsdata class]])

通過 這句標準sqlite語句 才能有效的將二進位制資訊儲存到資料庫

sqlite3_bind_blob(pstmt, idx, [obj bytes], (int)[obj length], sqlite_static);

如果使用update語句是不可能呼叫上面的方法的,可以把oc更新的sql語句替換成c語言的語句試一試。

oc的更新sql語句:

nsdata *data = uiimagepngrepresentation([uiimage imagenamed:@"3.jpeg"]);

nsstring *insertsql2 = [nsstring stringwithformat:

@"update datatable set '%@' = '%@' where id = '%i' ",

img1, data,3];

bool res = [db executeupdate:insertsql2];

if (res)

}

替換成 c的更新sql語句,如下:

nsdata *data = uiimagepngrepresentation([uiimage imagenamed:@"3.jpeg"]);

nsstring* sqlstr = @"update new set img1 = ? where id = 3 ";

bool res = [db executeupdate:sqlstr,data];

if (res)

iOS FMDB 無法更新二進位制資料的問題

使用fmdb很方便的實現了 通過資料庫欄位名而不是字段索引 資料的讀取,插入,更新,刪除。但是我在更新時發現通過格式化字元 data nsdata 傳入的二進位制資料更新到資料庫後不能顯示。如果使用的時insert 方法能將資訊正確儲存到資料庫重,因為在fmdb中處理insert時會呼叫到下面的方法...

更新二進位制位

問題描述 給出兩個32位的整數n和m,以及兩個二進位制位的位置i和j。寫乙個方法來使得n中的第i到j位等於m m會是n中從第i為開始到第j位的子串 日期 2017 8 22 思路 由於題目的提示中已經給出,i到j有足夠的空間放置m,將n中的第i到j之間的數字全部置為0,最後與m異或即可 includ...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...