我在将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”插入已经失败的错误。但我真的不知道我要改变什么。
提前感谢您的帮助!
答案 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)