ios - 在 sqlite 数据库中插入 blob (objective-c)

标签 ios objective-c database sqlite

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

计划:

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

一切正常,只是插入不正常。我已经准备好将 int 和 strings 插入数据库并且工作正常,但是 blob 让我抓狂。

我使用的代码:

我上了一个类,里面有所有的数据库方法。它叫做分贝。我得到了一个使用 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];

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

预先感谢您的帮助!

最佳答案

我解决了。

在我的数据库类中我写了这个方法:

-(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!");
}

希望对某人有所帮助。

关于ios - 在 sqlite 数据库中插入 blob (objective-c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19559118/

相关文章:

ios - Swift 3.0 中的结构枚举

ios - SwiftUI - 隐藏 View 时的动画

ios - ActivityIndi​​cator 在计算后不会停止

javascript - iPhone 应用程序 : getting data without a web API

objective-c - Dropbox OAuth token

c# - Facebook SDK - 处理应用程序邀请?

objective-c - 在 AVAssetReader 中设置时间范围会导致卡住

sql - 如何比较同一个表上最后插入的两个指定行的列值?

android - 使用 sqlite 从表中获取每周总和数据

php - 在没有数据库的情况下运行 Drupal 7 网站