2011-06-30 14 views
0

これは一般的な質問です。ファイルへのsqliteデータの書き込みと取得方法

どのようにファイルにデータを書き込み、取得することができますか。このファイルはどのようにして.csvという形式で作成できますか。

は、例えば、私は.csv形式でのファイルにこのデータを書き込むことができますどのようによりその

NSString *coords = [[[NSString alloc] initWithFormat:@"%f,%f\n",longitude,latitude] autorelease]; 
[locations addObject:coords]; 

などのデータを取得しています。

とDaveデロングによって書かれたCSVパーサがありますどのように私は、このデータを取得することができ

+0

をホープは、csv形式を使用することが特に必要である、あなたはSQLiteのデータベースに変換して、あなたすることができますsqliteで動作することができます... – iMOBDEV

+0

いいえ、.csv formateを使用するために具体的です。私はちょうどcsv fromatを持っているファイルにデータを書きたいと思います。それを取得します。 – Shima

+0

私はあなたはcsvファイルからの読み書きをしたいですか? – iMOBDEV

答えて

0

NSData *csvData = [NSData dataWithContentsOfFile:csvPath]; 
NSString *strCSV = [[NSString alloc]initWithData:csvData encoding:NSUTF8StringEncoding]; 

はそれが

0

より。あなたはそれを使うことができます。

+0

私はcsvパーサを必要としません私はデータをファイルに書き込む必要があり、そのファイルだけを読むこと – Shima

0

まず、SQLite C APIをObjective-Cで直接使用する人はマゾキストなので、FMDBを使用してデータベースにアクセスしていることを確認してください。 CSVファイルへの書き込みについては

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 
} 

、うまくそのためのコードがあまりにもあります:

#import "CHCSV.h" 

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

//write stuff 
[csvWriter closeFile]; 
[csvWriter release]; 
And to combine them, you'd do: 

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]; 

CSVファイルへ出tableNameのテーブルの内容を書き込むことをあなたはこのようなことを行うことができます。

次に、CSVパーサーを使用してCSVを解析し、データを取得できます。ファイルから読み込むには、CSV

NSString *coords = [[[NSString alloc] initWithFormat:@"%f,%f\n",longitude,latitude] autorelease]; 

NSData *csvData = [coords dataUsingEncoding:NSUTF8StringEncoding]; 

NSArray *UsrDocPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *DocsDir = [UsrDocPath objectAtIndex:0]; 
    NSString *csvPath = [DocsDir stringByAppendingPathComponent:@"coords.csv"]; 

    //This is upto your logic that do you want to remove existant csv file or not 
    BOOL success = [FileManager fileExistsAtPath:csvPath]; 
    if(success){ 
     [FileManager removeItemAtPath:csvPath error:&error]; 
    } 

    [csvData writeToFile:csvPath atomically:YES]; 

を書き込むには

+0

私は混乱しています。より良い方法で説明してください – Shima

+0

上記のコードはdbからデータを取得し、 .CSVファイルを作成します。あなたがいつでもCSVからデータを読みたいと思ったら、CSVパーサを使う必要があります。 –

関連する問題