2012-08-17 2 views
2

가능한 중복 :
Exporting Sqlite table data to csv file programatically - xcode iOS 5 (for an ipad app)내보내기 SQLite는 테이블 데이터, 프로그램

나는 간단한 응용 프로그램을 개발하고있다. sqlite를 사용하여 데이터를 테이블에 저장합니다 (로컬, 앱 문서 폴더에 있음). 문제가되는이 테이블 데이터를 CSV 파일로 내보내고 사람에게 이메일로 보내고 싶습니다. 내 iPad에서 변환 후 물리적으로 CSV 파일에 액세스하려는 것을 의미합니다 .... 아무도 다운로드 할 수있는 예제 응용 프로그램을 제공 할 수 있습니까? 아니면 코드? 도와주세요

답변

7

이것은 좋은 생각을 줄 것입니다. 2 행의 테이블을 가정하면이 코드는 테이블의 모든 값을 읽고이를 NSString에 기록한 다음 문서 디렉토리의 CSV 파일에 씁니다. 특정 프로젝트에서이 코드를 작동시키는 방법에 대한 설명이 필요하면 알려주십시오.

NSString *csv = [[NSString alloc] init]; 

    sqlite3 *database; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *sqLiteDb 
    = [documentsDirectory stringByAppendingPathComponent:@"INSERT_DATABASE_NAME.sqlite3"]; 


    if(sqlite3_open([sqLiteDb UTF8String], &database) == SQLITE_OK) { 
     const char *sqlStatement = [[NSString stringWithFormat:@"SELECT * FROM myTable"] UTF8String]; 
     sqlite3_stmt *compiledStatement; 
     if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 

      while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
      //this assumes that there are two rows in your database you want to get data from 
      [csv stringByAppendingFormat:@"%@,%@\n", [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)], [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]]; 
      } 

      sqlite3_finalize(compiledStatement); 
      sqlite3_close(database); 
     }else{ 
      NSLog(@"database error"); 
     } 
    } 

NSError *error = nil; 
[csv writeToFile:[documentsDirectory stringByAppendingPathComponent:@"myFile.csv"] 
     atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

[csv release];