3

ブロブを sqlite db に挿入する際に問題が発生しました。私はiosで作業しているので、objective-cです。

計画:

ボタンを押すと、フォト ピッカーが開き、写真を選択し、別のボタンに触れると、写真が blob としてデータベースに保存されます。

挿入するだけですべてが正常に機能しています。私はすでに int と文字列をデータベースに挿入しており、正常に動作しますが、ブロブは私を夢中にさせます。

使用しているコード:

私はそれにすべてのdbメソッドを持っているクラスを手に入れました。db と呼ばれます。そして、db-objectを使用するクラスを取得しました。

DBクラス:

-(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」で挿入がすでに失敗しているというエラーが表示されます。しかし、私は本当に何を変えなければならないのか分かりません。

よろしくお願いします。

4

2 に答える 2

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

それが誰かを助けることを願っています。

于 2013-11-07T13:10:16.353 に答える
0

画像を文字列に変換するためにbase64を使用し、dbに文字列を挿入します

base64クラスをダウンロードする

このリンクを確認した後

于 2013-10-24T07:17:34.240 に答える