0

イメージを保存してtableViewにロードしようとしています.SQLiteファイルに保存するために、これを行います:

-(void)InsertRecords:(NSData *)pic{
..... // Open my SQLite file
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO myMovies (movieImage) VALUES (\"%@\")", pic];
...
const char *insert_stmt = [insertSQL UTF8String];
...
sqlite3_bind_blob(statement, 1, [pic bytes], [pic length], NULL);
...

どの写真が NSData で、私はそれの NSLog を取得しました。そして私にコードをくれました。また、ロードには次のコードを使用しました:

int length = sqlite3_column_bytes(sqlStatement, 1);
MyMovie.image = [NSData dataWithBytes:sqlite3_column_blob(sqlStatement, 1) length:length];

それからNSLogedされ、NSDataの構造は似ていますが、データが異なります! それは完全に変わりました!私は何か間違っていますか?

4

2 に答える 2

1
const char *insert_stmt = [@"INSERT INTO myMovies (movieImage) VALUES (?)" UTF8String];
...
sqlite3_bind_blob(statement, 1, [pic bytes], [pic length], SQLITE_TRANSIENT);
于 2012-10-26T20:01:21.020 に答える
1

sqlite3_bind_blobパラメータにバインドしますが、insert ステートメントには実際にはパラメータがありません。(エラーの戻り値を確認する必要があります。)

ステートメントを挿入すると、文字列としてフォーマットされた画像が表示されます。これは、非 ASCII バイトで壊れます。

于 2012-10-26T18:21:24.810 に答える