【发布时间】:2010-07-24 23:24:39
【问题描述】:
到目前为止,我已经设法创建了这个方法,用于在 iPhone 上插入 SQLite 数据库:
- (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);
}
现在我正在考虑将图像存储在数据库中。到目前为止,我已经found this:
UIImage *cachedImage = [UIImage imageNamed:@"Icon.png"];
NSData *dataForImage = UIImagePNGRepresentation(cachedImage);
但是我在尝试将这个 NSData 插入到创建 sqlStatement 的 char 数组中时遇到了麻烦。有人知道怎么做吗?
(我在数据库中有一个 blob 类型的字段)。
谢谢
【问题讨论】:
-
不要不将 BLOB 放入数据库。它在所有层面上都非常低效。在数据库中存储路径并将 BLOB 放入文件系统中。
-
我会强烈推荐使用 Flying Meat 数据库包装器,它已经为您解决了所有这些问题,并且使用起来非常简单: github.com/ccgus/fmdb
标签: iphone objective-c binary image-manipulation nsdata