Ios 在sqlite数据库中插入blob(objective-c)
我在将blob插入sqlite数据库时遇到问题。我在ios上工作,所以是objective-c 该计划: 我按下一个按钮,一个照片选择器打开,我选择一张照片,我触摸另一个按钮,照片作为一个斑点保存在数据库中 一切都很好,只是插不进去。我已经准备好在数据库中插入int和字符串,效果很好,但是blob让我发疯 我使用的代码是: 我有一个类,里面有所有的db方法。它叫db。我得到了一个类,我使用db对象 DB类:Ios 在sqlite数据库中插入blob(objective-c),ios,objective-c,database,sqlite,Ios,Objective C,Database,Sqlite,我在将blob插入sqlite数据库时遇到问题。我在ios上工作,所以是objective-c 该计划: 我按下一个按钮,一个照片选择器打开,我选择一张照片,我触摸另一个按钮,照片作为一个斑点保存在数据库中 一切都很好,只是插不进去。我已经准备好在数据库中插入int和字符串,效果很好,但是blob让我发疯 我使用的代码是: 我有一个类,里面有所有的db方法。它叫db。我得到了一个类,我使用db对象 DB类: -(void)insertblob:(NSData *)blob stmt:(NSStr
-(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];
那么我错过了什么?我从update语句中得到一个错误,即在“U”处插入allready失败。但我真的不知道我要改变什么
提前感谢您的帮助 您可以使用base64将图像转换为字符串,并在db中插入字符串 下载类 检查完这个后,我解决了它 在我的db类中,我编写了以下方法:
-(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!");
}
希望这能帮助别人 您应该像这样更改updateStmt。updateStmt=[NSString stringWithFormat:@“更新面集图像=?”];在
SQL
中插入图像是无效的,应避免使用可证明的方法。使用本地存储存储映像,并使用SQL
存储对该路径/映像名称的引用