簡體   English   中英

在sqlite db中插入blob(objective-c)

[英]insert blob in sqlite db (objective-c)

我遇到了將blob插入sqlite db的問題。 我正在研究ios,所以它的目標是c。

計划:

我按下一個按鈕,一個照片選擇器打開,我正在選擇一張照片,我正在觸摸另一個按鈕,照片作為一個blob保存在數據庫中。

一切都工作正常只插入不。 我已經將int和字符串插入數據庫並且它工作正常,但blob讓我發瘋。

代碼即時使用:

我得到了一個類,我在其中獲得了所有db-methods。 它叫做db。 我得到了一個使用db-object的類。

DB-類:

-(void)insertblob:(NSData *)blob stmt:(NSString *)blobStmnt {

const char *sql = [blobStmnt UTF8String];

sqlite3_prepare_v2(database, sql, 1, &statement, NULL);

if (SQLITE_DONE != sqlite3_step(statement)) {
     NSLog(@"Error while inserting data. '%s'", sqlite3_errmsg(database));
}
sqlite3_bind_blob(statement, 1, [blob bytes], [blob length], SQLITE_TRANSIENT);

}

使用級:

[database openDB:@"Content"]
updateStmt = [NSString stringWithFormat:@"UPDATE Face SET image =%@", image];
[database insertblob:imageData stmt:updateStmt];
[database closeDB];

那我錯過了什么? 我從更新語句中收到“U”插入已經失敗的錯誤。 但我真的不知道我要改變什么。

在此先感謝您的幫助!

我解決了

在我的db-class中我編寫了這個方法:

-(void)insertblob:(NSData *)blob stmt:(NSString *)blobStmnt {

const char *sql = [blobStmnt UTF8String];
sqlite3_prepare_v2(database, sql, -1, &statement, NULL);

int returnValue = sqlite3_bind_blob(statement, 1, [blob bytes], [blob length], SQLITE_TRANSIENT);
sqlite3_step(statement);
sqlite3_finalize(statement);

if (returnValue != SQLITE_OK) {
    NSLog(@"NOT OK");
}
NSLog(@"Saved!");
}

希望能幫到別人。

您使用base64將圖像轉換為字符串並在db中插入字符串

下載base64

檢查此鏈接后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM