2012-02-15 11 views
0

私はオフラインモードのiPhoneアプリケーションで作業しています。最初のデータはサーバーからJSON形式で取得され、このデータを解析して変更可能な配列に格納し、これらの配列値をsqliteデータベースに挿入しますが、1つの値または最後の値だけが挿入されます。すべてのヘルプは高く評価されて最後の値だけがiPhoneのsqliteデータベースに挿入されます

-(void)insertData { 
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDir = [documentPaths objectAtIndex:0]; 
    NSString *databasePath=[documentsDir stringByAppendingPathComponent:@"paddleEight.sqlite"]; 
    NSLog(@"The Database Path is---> %@", databasePath); 

    sqlite3 *database; 

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
    int i; 

    sqlite3_stmt *addStmt; 
    NSString* sSqlSelect = [NSString stringWithFormat:@"insert into GalleryTabel(depth,imageUrl)VALUES(?,?);"]; 



    for (i = 1; i < [self.propertiesArray count]; i++) 
    { 

     if(sqlite3_prepare_v2(database, [sSqlSelect UTF8String], -1, &addStmt, NULL) == SQLITE_OK) 
     { 


      sqlite3_bind_text(addStmt, 1, [[[[[self.propertiesArray objectAtIndex:i]objectForKey:@"images"]objectForKey:@"primary"]objectForKey:@"type"] UTF8String],-1,SQLITE_TRANSIENT); 
      sqlite3_bind_text(addStmt, 2, [[[[[self.propertiesArray objectAtIndex:i]objectForKey:@"images"]objectForKey:@"primary"]objectForKey:@"location"] UTF8String],-1,SQLITE_TRANSIENT); 

     } 

    } 
    if(sqlite3_step(addStmt)==SQLITE_DONE) 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add Record" message:@"Contact Added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];  
     [alert show]; 
     [alert release]; 
     alert=nil; 

    } 
    else 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"record" message:@"record not created" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
     alert=nil; 
    } 

    } 

} 

は、ここに挿入するための私のコードです。おかげさまでアドバンス:

+0

あなたの配列のサイズを確認しましたか? – Hiren

+0

私に返信してくれてありがとう。うん、私は66個のオブジェクトを持っていることを確認しました。 – iPhone4s

答えて

0

文を複数回準備しますが、一度だけ実行します。 同じSQL命令を使用している場合は、文を一度準備してから、代わりに各配列要素に対してパラメータをバインドしてstatementを実行する必要があります。

関連する問題