我将图像存储在服务器中。然后我通过图像URL获取图像并保存到db1.sqlite文件。图像保存为像URL一样的db1.sqlite文件。如何显示保存的URL中的图像。 product_image具有imageURL路径。将图像保存到数据库并从服务器加载
代码:
SQLite表结构:
CREATE TABLE "product" ("id" INTEGER PRIMARY KEY NOT NULL , "cat_id" INTEGER NOT NULL , "product_image" VARCHAR NOT NULL , "order_by" INTEGER NOT NULL)
插入代码:
const char *sqlInsert = [[NSString stringWithFormat:@"insert into product (id, cat_id,product_image,order_by) values ('%@','%@','%@','%@')", [tuser objectForKey:@"id"], [tuser objectForKey:@"cat_id"],[tuser objectForKey:@"product_image"],[tuser objectForKey:@"order_by"]] cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"product insert %s", sqlInsert);
if(sqlite3_prepare_v2(database, sqlInsert, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
图像取:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//NSLog(@"docs dir is %@", documentsDirectory);
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"db1.sqlite"];
//NSLog(@"filepath %@",path);
mArray = [[NSMutableArray alloc]init];
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {
const char *sql = "SELECT id,cat_id,product_image FROM product order by order_by";
NSLog(@"sql is %s",sql);
sqlite3_stmt *statement;
// int catID = 0;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
// We "step" through the results - once for each row.
while (sqlite3_step(statement) == SQLITE_ROW) {
int length = sqlite3_column_bytes(statement, 2);
NSData *imageData = [NSData dataWithBytes:sqlite3_column_blob(statement, 2) length:length];
UIImage *image = [UIImage imageWithData:imageData];
[mArray addObject:image];
[image release];
}
}
sqlite3_finalize(statement);
}
else {
sqlite3_close(database);
NSAssert1(0, @"Failed to open database with message '%s'.", sqlite3_errmsg(database));
// Additional error handling, as appropriate...
}
我应该在“product_image”中使用什么VARCHAR NOT NULL? BLOB或VarChar创建表时。 – user2674668
我的图片获取代码是正确的? – user2674668
1.由于'product_image'是一个包含图像URL的字符串,所以应该使用'TEXT'作为列定义,而不是'BLOB'。 2.不,您的图片获取代码不正确。看到我修改后的答案。 – Rob