Cho đến nay tôi đã quản lý để tạo ra phương pháp này để chèn vào một cơ sở dữ liệu SQLite trên iPhone:Chèn NSData vào SQLite trên iPhone
- (void) insertToDB :(NSString *)Identifier :(NSString *)Name
{
sqlite3 *database;
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
char *sql1 = "INSERT INTO table VALUES ('";
const char *sql2 = [Identifier cStringUsingEncoding:[NSString defaultCStringEncoding]];
char *sql3 = "', '";
const char *sql4 = [Name cStringUsingEncoding:[NSString defaultCStringEncoding]];
char *sql5 = "')";
char *sqlStatement[255];
strcpy(sqlStatement, sql1);
strcat(sqlStatement, sql2);
strcat(sqlStatement, sql3);
strcat(sqlStatement, sql4);
strcat(sqlStatement, sql5);
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
{
sqlite3_last_insert_rowid(database);
sqlite3_reset(compiledStatement);
}
sqlite3_finalize(compiledStatment);
}
sqlite3_close(database);
}
Bây giờ tôi nhìn vào lưu trữ một hình ảnh trong cơ sở dữ liệu. Cho đến nay tôi đã found this:
UIImage *cachedImage = [UIImage imageNamed:@"Icon.png"];
NSData *dataForImage = UIImagePNGRepresentation(cachedImage);
Nhưng tôi đang gặp rắc rối cố gắng để chèn NSData này vào mảng char mà làm cho sqlStatement. Bất cứ ai cũng có một ý tưởng làm thế nào để làm điều này?
(Tôi có một trường trong cơ sở dữ liệu loại blob cho việc này).
Cảm ơn
Không * đặt BLOB vào cơ sở dữ liệu. Đó là khủng khiếp không hiệu quả trên tất cả các cấp. Lưu trữ một đường dẫn trong cơ sở dữ liệu và đưa BLOB vào hệ thống tập tin. – bbum
Tôi sẽ * đánh giá cao * khuyên bạn nên sử dụng trình bao bọc cơ sở dữ liệu Flying Meat, đã giải quyết tất cả các vấn đề này cho bạn rồi và * nhiều * đơn giản hơn để sử dụng: http://github.com/ccgus/fmdb –