2011-02-03 15 views
0

問題を理解できません。SQLiteで挿入が機能しないiOS

- (void)viewDidLoad { 
    NSString *docsDir; 
    NSArray *dirPaths; 

    // Get the documents directory 
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    docsDir = [dirPaths objectAtIndex:0]; 

    // Build the path to the database file 
    databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"contacts.sqlite"]]; 
} 

- (IBAction) saveData{ 
    sqlite3_stmt *statement; 

    const char *dbpath = [databasePath UTF8String]; 
    if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK) 
    { 
     NSLog(@"enter %@",name.text); 

     NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO EMP (name) VALUES (\"%@\")", name.text]; 

     //NSLog(@"enter123 %@",dbpath); 

     const char *insert_stmt = [insertSQL UTF8String]; 

     sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL); 
     NSLog(@"enter789 "); 

     if (sqlite3_step(statement) == SQLITE_DONE) 
     { 
      NSLog(@"Done success"); 

      /*status.text = @"Contact added"; 
      name.text = @""; 
      address.text = @""; 
      phone.text = @"";*/ 
     } 
     else 
     { 
      NSLog(@"fail"); 
      //status.text = @"Failed to add contact"; 
     } 
     sqlite3_finalize(statement); 
     sqlite3_close(contactDB); 
    } 
} 
+2

どちらでしょう誰あなたの質問をそのまま残っている場合。質問を修正し、あなたが見ているエラーや警告についてもっと詳しく説明してください。何が起こると予想されているのか、何が実際に起こっているのかを説明し、問題を解決するためにすでに試したことを示します。これがなければ、あなたの質問は非常に迅速に閉鎖されます。 – Jasarien

+0

あなたが得ている正確な問題は何ですか?どんなクラッシュ?または失敗する? – KingofBliss

+0

**常に**すべてのSQLite操作からの戻りコードをチェックしてください。そして、操作が失敗した場合、**常に 'sqlite3_errmsg'を呼び出して、結果のメッセージを出力してください。 –

答えて

-1

使用このことの助けあなた

sqlite3_stmt *statement; 
    const char *dbpath = [databasePath UTF8String]; 
    if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK){ 
    const char *insert_stmt = "INSERT INTO EMP (name) VALUES (?)"; 
    if(sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL)==SQLITE_OK){ 
     sqlite3_bind_text(statement,1, [name.text UTF8String], -1, SQLITE_TRANSIENT); 
    } 
    if (sqlite3_step(statement) == SQLITE_DONE) 
     NSLog(@"You have Sucessfully saved!"); 
    else 
     NSLog(@"Failed to Save!"); 

     sqlite3_finalize(statement); 
    } 
+0

適切な字下げによって大きなメリットがあります。 –

+0

準備が失敗しても、なぜステップを実行しますか? –

関連する問題