2011-09-13 36 views
0

在我的应用程序,当我插入数据通过点击添加按钮数据将被插入到数据库和table.record将完美插入,但是当我将该数据添加到表中它重复数据库数据..这里是代码:重复数据,同时添加到表

NSString *insertData=[NSString stringWithFormat:@"insert into tbl_Bills(Amount,Note,Due_On) values ('%f','%@','%@')",addAmountInDouble,val,due]; 
[database executeQuery:insertData]; 

NSLog(@"inert query: %@",insertData); 
NSLog(@"value inserted"); 

NSString *countQuery = [NSString stringWithFormat:@"Select Bill_Id,Entry_Date,Amount,Note,Due_On from tbl_Bills"]; 
NSArray *countArray1 = [database executeQuery:countQuery]; 
NSLog(@"Query:%@",countArray1); 
[BillTableArray addObjectsFromArray:countArray1]; 

NSLog(@"Count array %@",countQuery); 

NSLog(@"table array:%@",BillTableArray); 
[database close]; 
[table reloadData]; 

计数阵列是好的,但表阵列复制了value..i在viewDidLoad()方法还初始化表阵列。

+0

烨表阵列复制的价值。 – Developer

+0

可以提供表数组的代码? – Maulik

+0

请提供您的完整代码。 – Ron

回答

1

首先你需要添加新对象之前清除你的表数组:

[BillTableArray removeAllObjects];

后添加新的更新对象:

[BillTableArray addObjectsFromArray:countArray1]; 
1

这是因为在将新数据添加到BillTableArray之前,您并未清除数据。您将在整个表中重新运行查询 - 从而再次检索所有记录,包括您在初始视图加载时已经在BillTableArray中设置的记录。

的问题是这一行:

[BillTableArray addObjectsFromArray:countArray1]; 

BillTableArray已经装载了从最初的viewDidLoad呼叫数据,但你执行的查询再次检索所有从数据库中该数据的,而这条线将所有将这些对象再次添加到阵列中。所以你可能看到的所有东西都重复,除了新增加的项目。

你可能只需要做:

BillTableArray = [countArray1 retain]; 

或相似的(不要忘了保留/释放一些适当的对象,以确保您不会失去他们或泄漏他们,不知道BillTableArray的声明方式。

1

BillTableArray想必包含了所有你已经有了在表中的数据。当您重新查询数据库,让您的附加价值,你会回来的一切,然后再加入这一切。

所以,无论是

  • 具体仅新对象添加到BillTableArray
  • 更改countQuery只返回新对象
  • countArray1
1

[BillTableArray addObjectsFromArray:countArray1];替换的BillTableArray所有内容增加了从阵列中的所有对象countArray1。所以我猜想在添加新对象之前,BillTableArray中的现有对象不会被删除。这会产生重复。要删除重复项,只需删除BillTableArray的所有对象,然后从countArray1中添加对象。

只是一个小纸条,请确保您命名的变量以小写字母开头。