2015-10-19 47 views
1

我試圖插入多行數據到sqlite數據庫的同一時間。但是例如我有一個值。我從我的api.And得到這個值我有2000數據。我只是增加1行,並在該行我可以看到2000數據。同時插入多行數據sqlite與json ios

for (NSDictionary *customerDictionary in customerArray) { 
      Kart *kart = [Kart customerWithName:[customerDictionary valueForKey:@"adi"]]; 
      [_kartList addObject:kart]; 
     } 

而我正在使用FMDB的sqlite。

編輯

我可以在一個數據與that.But當我嘗試另一個對象其加入所有提交的數據添加到數據庫到我的數據庫中的一個行添加到sqlite的分貝。

它只是增加一行,正確的數據

[database executeUpdate:@"INSERT OR REPLACE INTO KartDB (adi) VALUES (?)" withArgumentsInArray:kart.adi]; 

其添加從kart.adi和kart.adi2所有數據在一排。

 [database executeUpdate:@"INSERT OR REPLACE INTO KartDB (adi,adi2) VALUES (?,?)" withArgumentsInArray:[NSArray arrayWithObjects:kart.adi,kart.adi2, nil]]; 

你能給我一個建議嗎?

+0

什麼建議嗎? –

回答

0

對於您試圖添加數據的表,您的PRIMARY KEY是什麼?也許你只是重寫插入,因爲PRIMARY KEY不是唯一的。

會看起來像這樣。此外,如果您要一次執行2000次插入操作,請查看FMDB的inTransaction功能。會使你的更新更快。

你可以再調用類似:

[dbManager.databaseQueue inTransaction:^(FMDatabase *db, BOOL *rollback) { 

for (NSDictionary *customerDictionary in customerArray) { 
     Kart *kart = [Kart customerWithName:[customerDictionary valueForKey:@"adi"]]; 

     [database executeUpdate:@"INSERT OR REPLACE INTO KartDB (primaryKey, adi) VALUES (?,?)", primaryKey, kart.adi]; 

    } 

}]; 
[dbManager.databaseQueue close];