Ich möchte Bilddaten in meine SQLite-Datenbank speichern, aber ich kann es nicht tun ...
- (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 ('%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', ?)";
// Korrekte Zusammenfassung.
NSString* summary = [NSString stringWithString:article.summary];
summary = [summary stringByReplacingOccurrencesOfString:@"'" withString:@"''"];
// Korrekter Titel
NSString* title = [NSString stringWithString:article.title];
title = [title stringByReplacingOccurrencesOfString:@"'" withString:@"''"];
// Korrekter Körper
NSString* body = [NSString stringWithString:article.body];
//body = [body stringByReplacingOccurrencesOfString:@"'" withString:@"''"];
// Erstelle Insert-SQL-Abfrage.
NSString* insertSQL = [NSString stringWithFormat:sqlFormat, article.guid, title, summary, article.mainLink, article.pubDate, article.author, article.imageLink, body, article.favorite ? @"YES" : @"NO"];
// Zur Datenbank hinzufügen.
sqlite3_prepare_v2(articlesDB, [insertSQL UTF8String], -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
// Zur Liste hinzufügen.
[rssList addObject:article];
// Protokoll schreiben.
NSLog( @"Artikel hinzugefügt ... " );
}
else
{
NSLog( @"Fehler beim Hinzufügen des Artikels. Fehler ist: %s", sqlite3_errmsg(articlesDB) );
}
sqlite3_finalize(statement);
sqlite3_close(articlesDB);
}
}
Sie können sehen, dass ich eine Abfrage habe und am Ende ein kleines Bild und Wert (?) vorhanden sind.
@"INSERT INTO ARTICLES (guid, title, summary, mainLink, pubDate, author, imageLink, body, favorites, smallImage) VALUES ('%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', ?)";
Ich habe eine Funktion, die den Bildwert irgendwo in meinem Programm aktualisieren muss: In dieser Funktion wähle ich die Zeile mit dem Bildlink-URL aus, wenn ich versuche, Daten in die letzte Spalte "SMALLIMAGE" zu schreiben, aber ohne Ergebnis ... Wenn ich meine Datenbankdatei mit einem Editor öffne, sehe ich nur "NULL" in der letzten Zeile, als ob meine Daten nicht gespeichert wären ...
- (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: Fehler bei sqlite3_prepare_v2. Fehler ist: %s", sqlite3_errmsg(articlesDB) );
}
// Abschließen und Datenbank schließen.
sqlite3_finalize(statement);
sqlite3_close(articlesDB);
}
else
{
NSLog(@"SaveSmallImage: Fehler bei sqlite3_open. Fehler ist: %s", sqlite3_errmsg(articlesDB) );
}
}
Wer kann mir sagen, was ich falsch mache ...
0 Stimmen
Hier ist die Tabellenerstellung const char* sql_stmp = "CREATE TABLE IF NOT EXISTS ARTICLES (GUID TEXT UNIQUE, TITLE TEXT, SUMMARY TEXT, MAINLINK TEXT, PUBDATE TEXT, AUTHOR TEXT, IMAGELINK TEXT, BODY TEXT, FAVORITES TEXT, SMALLIMAGE BLOB)";
0 Stimmen
NSString* sqlFormat = @"INSERT INTO ARTICLES (favorites, smallImage) VALUES ('%@', ?)"; WAS MUSS ICH ANSTELLE VON "?" VERWENDEN %d oder %f oder was ???
0 Stimmen
HI, Könnten Sie mir bitte sagen, wo wir den Haupt-URL-String finden?