2011-01-11 13 views

Antwort

13

Zuerst sollten Sie sicherstellen, dass Sie FMDB verwenden, um auf die Datenbank zuzugreifen, da Personen, die die SQLite C-API direkt in Objective-C verwenden, Masochisten sind. Sie können das tun, wie folgt:

FMDatabase *db = [[FMDatabase alloc] initWithPath:@"/path/to/db/file"]; 
FMResultSet *results = [db executeQuery:@"SELECT * FROM tableName"]; 
while([results nextRow]) { 
    NSDictionary *resultRow = [results resultDict]; 
    NSArray *orderedKeys = [[resultRow allKeys] sortedArrayUsingSelector:@selector(compare:)]; 
    //iterate over the dictionary 
} 

Was in eine CSV-Datei zu schreiben, gut there's code for that too:

#import "CHCSV.h" 

CHCSVWriter * csvWriter = [[CHCSVWriter alloc] initWithCSVFile:@"/path/to/csv/file" atomic:NO]; 

//write stuff 
[csvWriter closeFile]; 
[csvWriter release]; 

Und sie zu kombinieren, würden Sie tun:

FMDatabase *db = [[FMDatabase alloc] initWithPath:@"/path/to/db/file"]; 
if (![db open]) { 
    //couldn't open the database 
    [db release]; 
    return nil; 
} 
FMResultSet *results = [db executeQuery:@"SELECT * FROM tableName"]; 
CHCSVWriter *csvWriter = [[CHCSVWriter alloc] initWithCSVFile:@"/path/to/csv/file" atomic:NO]; 
while([results nextRow]) { 
    NSDictionary *resultRow = [results resultDict]; 
    NSArray *orderedKeys = [[resultRow allKeys] sortedArrayUsingSelector:@selector(compare:)]; 
    //iterate over the dictionary 
    for (NSString *columnName in orderedKeys) { 
    id value = [resultRow objectForKey:columnName]; 
    [csvWriter writeField:value]; 
    } 
    [csvWriter writeLine]; 
} 
[csvWriter closeFile]; 
[csvWriter release]; 

[db close]; 
[db release]; 

That schreibt den Inhalt der Tabelle tableName in eine CSV-Datei.

+1

@Dave: Oh mein Gott. Ich habe noch nie von FMDB gehört. Ich werde endlich diesen ganzen SQLite Code in meiner App töten! Oh glücklicher Tag !!!!! – Josh

+1

@Josh du bist willkommen! Es gibt eine Tonne Open-Source-Material für Obj-C, also im Zweifelsfall ist es wahrscheinlich bereits für Sie getan (im Rahmen des Zumutbaren);) Ich würde im Auge behalten http://cocoaobjects.com –

+0

I Probleme beim Importieren meiner CSV-Datei in meine SQLite-Datenbank. Meine CSV-Datei enthält europäische Sprachen mit Sonderzeichen wie Umlaute. Was könnte falsch sein? – Meghan

0

Führen Sie einfach eine SELECT für jede Tabelle aus und drucken Sie den Wert jeder Spalte nach Bedarf in eine Textdatei aus.