朋友只是一般問題。如何將sqlite數據寫入並檢索到文件
如何將數據寫入並檢索到該文件。以及如何使該文件在.csv格式中。
例如我是檢索類似
NSString *coords = [[[NSString alloc] initWithFormat:@"%f,%f\n",longitude,latitude] autorelease];
[locations addObject:coords];
比.csv格式怎麼能寫上文件這個數據。
而且比我怎樣才能檢索數據
朋友只是一般問題。如何將sqlite數據寫入並檢索到文件
如何將數據寫入並檢索到該文件。以及如何使該文件在.csv格式中。
例如我是檢索類似
NSString *coords = [[[NSString alloc] initWithFormat:@"%f,%f\n",longitude,latitude] autorelease];
[locations addObject:coords];
比.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];
從文件中讀取
NSData *csvData = [NSData dataWithContentsOfFile:csvPath];
NSString *strCSV = [[NSString alloc]initWithData:csvData encoding:NSUTF8StringEncoding];
希望它可以幫助
首先,您需要確保您使用的是FMDB來訪問數據庫,因爲在Objective-C中直接使用SQLite C API的人是受虐狂分子。你可以是這樣做的:
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
}
至於寫作到CSV文件,以及有該代碼太:
#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文件。
然後,您可以使用CSV解析器解析CSV並獲取數據。
我很困惑。可以更好地解釋請 – Shima
Shima,上面的代碼是用於從數據庫獲取數據,然後寫它進入文件.CSV。寫完後,如果想要從CSV讀取數據,則需要使用CSV解析器。 –
有使用CSV格式的特定需要,你可以將其轉換成SQLite數據庫,然後你可以在sqlite上工作... – iMOBDEV
沒有具體的使用.csv合成。我只是想寫入數據文件,其中有csv fromat。並檢索到 – Shima
我有一個已答覆,您是否想從/到/ csv文件進行讀取/寫入? – iMOBDEV