im Xcode 4.6でsqliteを使用してデータベースにIMAGEを挿入する作業をしているときに、テキストフィールドとuiimageview(動的に生成されたバーコード画像を持つ)を挿入したかっただけです。
残念ながら、「エラーは次のとおりです:メモリ不足です」というメッセージが表示されます
聞いてください私が使用しているコードです、plzは私の間違いがどこにあるかを私に知らせてください&詳細については私に知らせてください
*1.データベースの作成*
-(void)createoropendb {
NSArray *path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docpath =[path objectAtIndex:0];
dbpathstring =[docpath stringByAppendingPathComponent:@"DataBase.db"];
char *error;
NSFileManager *filemanager =[NSFileManager defaultManager];
if (![filemanager fileExistsAtPath:dbpathstring])
{
const char *dbpath =[dbpathstring UTF8String];
if (sqlite3_open(dbpath, &barcodeDB) == SQLITE_OK)
{
const char *sql_start ="CREATE TABLE IF NOT EXISTS DBTABLE1(NAME TEXT UNIQUE,IMAGEURL BLOB)";
NSLog(@"db created");
sqlite3_exec(barcodeDB, sql_start,NULL,NULL, &error);
sqlite3_close(barcodeDB);
}
}
}
*2.データを挿入するためのボタン*
- (IBAction)savedata:(id)sender {
UIImage *image =imageView.image;
NSData *imageData=UIImagePNGRepresentation(image);
[self SaveImagesToSql: imageData.bytes:Uimagetext.text];
}
*3.データを挿入する方法*
- (void) SaveImagesToSql: (NSData*) imgData :(NSString*) mainUrl {
const char* sqliteQuery = "INSERT INTO DBTABLE1(NAME,IMAGEURL) VALUES (?, ?)";
sqlite3_stmt* statement;
if( sqlite3_prepare_v2(barcodeDB, sqliteQuery, -1, &statement, NULL) == SQLITE_OK )
{
sqlite3_bind_text(statement, 1,[mainUrl UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_blob(statement, 2,[imgData bytes],[imgData length], SQLITE_TRANSIENT);
sqlite3_step(statement);
NSLog( @"Saved image successfully" );
}
else
{
NSLog( @"SaveBody: Failed from sqlite3_prepare_v2. Error is: %s",sqlite3_errmsg(barcodeDB) );
}
// Finalize and close database.
sqlite3_finalize(statement);
}