I want to save image data to my sqlite database, but I cannot do this ...
- (void) SaveData: (Article*) article :(NSMutableArray*) rssList { sqlite3_stmt *statement; if (sqlite3_open([self.dataBasePath UTF8String], &articlesDB) == SQLITE_OK) { NSString* sqlFormat = @"INSERT INTO ARTICLES (guid, title, summary, mainLink, pubDate, author, imageLink, body, favorites, smallImage) VALUES ('%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', ?)"; // Correct summary. NSString* summary = [NSString stringWithString:article.summary]; summary = [summary stringByReplacingOccurrencesOfString:@"'" withString:@"''"]; // Correct title NSString* title = [NSString stringWithString:article.title]; title = [title stringByReplacingOccurrencesOfString:@"'" withString:@"''"]; // Correct Body NSString* body = [NSString stringWithString:article.body]; //body = [body stringByReplacingOccurrencesOfString:@"'" withString:@"''"]; // Create Insert SQL query. NSString* insertSQL = [NSString stringWithFormat:sqlFormat, article.guid, title, summary, article.mainLink, article.pubDate, article.author, article.imageLink, body, article.favorite ? @"YES" : @"NO"]; // Add to database. sqlite3_prepare_v2(articlesDB, [insertSQL UTF8String], -1, &statement, NULL); if (sqlite3_step(statement) == SQLITE_DONE) { // Add to list. [rssList addObject:article]; // Write Log. NSLog( @"Article added ... " ); } else { NSLog( @"Failed to add article. Error is: %s", sqlite3_errmsg(articlesDB) ); } sqlite3_finalize(statement); sqlite3_close(articlesDB); } }
You can see that I have a request, and in the end I have smallimage and value (?)
@"INSERT INTO ARTICLES (guid, title, summary, mainLink, pubDate, author, imageLink, body, favorites, smallImage) VALUES ('%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', ?)";
I have a function that should update the image value somewhere in my program: in this function I select a line with the URL of the image link when I try to write data to the last column "SMALLIMAGE", but there is no result ... When I open my database file with an editor, which I see in the last line, only "NULL", as my data is not saved ...
- (void) SaveSmallImage: (NSData*) imgData :(NSString*) mainUrl { if (sqlite3_open([self.dataBasePath UTF8String], &articlesDB) == SQLITE_OK) { NSString* sqliteQuery = [NSString stringWithFormat:@"SELECT * FROM ARTICLES WHERE IMAGELINK = '%@'", mainUrl]; sqlite3_stmt* statement; if( sqlite3_prepare_v2(articlesDB, [sqliteQuery UTF8String], -1, &statement, NULL) == SQLITE_OK ) { sqlite3_bind_blob(statement, 9, [imgData bytes], [imgData length], SQLITE_TRANSIENT); sqlite3_step(statement); } else { NSLog( @"SaveBody: Failed from sqlite3_prepare_v2. Error is: %s", sqlite3_errmsg(articlesDB) ); }
Who can tell me what I'm doing wrong ...