2012-05-07 2 views
0

현재 데이터를 가져올 수있는 테이블이 있습니다. 내가하고 싶은 것은 테이블이 이미 번들에 존재하는지 확인하는 것입니다. 그렇지 않으면 테이블을 생성하여 번들에 저장합니다 (경로가 메인 번들에 있음을 의미). 데이터베이스를 확인하고 setInput 메서드의 맨 위에 만들길 원합니다. 나는 이와 비슷한 것을 위해 그렇게 수색을 해왔지만, 아직 아무 것도 생각 해 내지 못했다. 어떤 도움이라도 대단히 감사합니다. 내가 수행 알려 노력하고있어 정확한 충분한 설명을 제공하지 않았고 내가 시도 할 것이다, 그래서 만약 내가 아직 iOS 및 SQLite는 아주 새로운 해요테이블이 있는지 확인하고 테이블이 존재하지 않으면 생성하십시오 ... iOS/SQLite

-(IBAction)setInput:(id)sender 
{ 
    NSString *strStoreNumber; 
    NSString *strRegNumber; 

    strStoreNumber = StoreNumber.text; 
    strRegNumber = RegNumber.text; 
    lblStoreNumber.text = strStoreNumber; 
    lblRegNumber.text = strRegNumber; 

    NSString* databasePath = [[NSBundle mainBundle] pathForResource:@"tblStore" ofType:@"sqlite"]; 

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
    { 
     NSLog(@"Opened sqlite database at %@", databasePath); 
     sqlite3_exec(database, "CREATE TABLE IF NOT EXISTS tblStore (ID INTEGER PRIMARY KEY AUTOINCREMENT, Message TEXT)", NULL, NULL, NULL); 
     //...stuff 
    } 
    else 
    { 
     NSLog(@"Failed to open database at %@ with error %s", databasePath, sqlite3_errmsg(database)); 
     sqlite3_close (database); 
    } 
//  
    NSString *querystring; 

    // create your statement 
    querystring = [NSString stringWithFormat:@"SELECT strStore, strReg FROM tblStore WHERE strStore = %@ AND strReg = %@;", strStoreNumber, strRegNumber]; 

    const char *sql = [querystring UTF8String]; 

    NSString *szStore = nil; 
    NSString *szReg = nil; 

    sqlite3_stmt *statement = nil; 
    if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL)!=SQLITE_OK) //queryString = Statement 
    { 
     NSLog(@"sql problem occured with: %s", sql); 
     NSLog(@"%s", sqlite3_errmsg(database)); 
    } 
    else 
    { 
     // you could handle multiple rows here 
     while (sqlite3_step(statement) == SQLITE_ROW) 
     {    
      szStore = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 0)]; 
      szReg = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)]; 
     }   

    } 

    sqlite3_finalize(statement); 

    lblStoreNumber.text = szStore; 
    lblRegNumber.text = szReg; 

// 
} 

: 여기 내 코드입니다 더 구체적으로 말하면 감사!

답변

5

"iphone sql create table is not exist"에 대한 빠른 검색 결과가 this 인 것으로 나타났습니다. 이미 존재하지 않는 경우

CREATE TABLE IF NOT EXISTS tableName(...) 

그것은 테이블을 생성 :

는 SQL의이 부분은 당신이 찾고있는 무엇을 아마.

+0

나는 내 코드를 sqlite3_open 메서드로 편집하고 비슷한 논리를 테이블 생성에 추가했다. Finder를 통해 내 프로젝트에서 기존 테이블을 삭제하고 앱을 실행하려고하면 "오류 :/Users/Matt ****/Documents/iOS Projects/CCoDBTry/CCoDBTry/tblStore. sqlite : 그런 파일이나 디렉토리가 없습니다. " 이 점에 대해 좀 더 통찰력을 제공해 주시겠습니까? – Skizz

+0

나는 그것이 존재하지 않게하는 방법을 따르지 않는다고 생각한다. Finder에서 프로젝트 위치에서 제거하는 것이 트릭을 수행 할 것이라고 생각했지만, 그렇게 할 때 컴파일 할 수는 없습니다. 이견있는 사람? – Skizz

+0

테이블뿐만 아니라 전체 데이터베이스를 삭제 한 것처럼 보입니다. Finder에서 삭제 한 데이터베이스 파일을 복구 한 다음 다시 시도 할 수 있습니다. 특정 테이블 만 삭제하려면'DROP TABLE tableName'을 사용할 수 있습니다. 또한 [이 블로그] (http://www.icodeblog.com/2008/08/19/iphone-programming-tutorial-creating-a-todo-list-using-sqlite-part-1/#init- db). – matsr

관련 문제