在SQLite DB (Objective-C)中插入blob



我在将 blob 插入 sqlite 数据库时遇到问题。我正在ios上工作,所以它是objective-c。

该计划:

我按下一个按钮,一个照片选择

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

一切都工作正常,只有插入不。 我准备好将 int 和字符串插入数据库并且工作正常,但 blob 让我发疯。

代码使用:

我有一个类,里面有所有的数据库方法,它叫做DB。 我得到了一个类,其中IM使用db-object。

数据库级:

-(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];

那么我错过了什么?我收到错误,指出从我的更新语句中插入 allready 在"U"处失败。但我真的不知道我必须改变什么。

提前感谢您的帮助!

我解决了。

在我的数据库类中,我编写了此方法:

-(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 类

检查此链接后

最新更新