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

时间:2013-10-24 07:03:01

标签: ios objective-c database sqlite

我在将blob插入sqlite数据库时出现问题。我正在研究ios所以它的目标是c。

计划:

我按下按钮,照片选择器打开,我正在选择照片,我正在触摸另一个按钮,照片将作为blob保存在数据库中。

一切正常,只插入不行。我已经将int和字符串插入数据库并且它工作正常,但blob让我发疯。

Code im Using:

我得到了一个类,其中包含了所有db-methods。它叫做db。我得到了一个使用db-object的类。

DB-Class:

-(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”插入已经失败的错误。但我真的不知道我要改变什么。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我解决了。

在我的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!");
}

希望有所帮助。

答案 1 :(得分:0)

使用base64将图像转换为字符串并在db

中插入字符串

下载base64课程

检查后link