2016-11-11 92 views
0

我被困在一个项目中,需要帮助来解决这个问题。
我收到来自3个不同输入的数据(2个是Spinners,1个是TextView)。
表列名称是:客户ID,数量和生产ID。在插入SQLite表之前验证重复数据

我需要在插入到我的表之前检查重复条目的生产ID。

这是我目前做的:

if(res.getCount()==0){ 
      boolean isInserted = mytempDB.insertdataintotemptable(
        ProducationSpinner.getSelectedItem().toString(), QuantityText.getText().toString(), 
        CustomerSpinner.getSelectedItem().toString()); 
      if (isInserted == true) 
       Toast.makeText(orderChalan.this, "Data save successfully", Toast.LENGTH_LONG).show(); 
      else 
       Toast.makeText(orderChalan.this, "Data not Inserted", Toast.LENGTH_LONG).show(); 
     } else { 

      while(res.isAfterLast()){ 

       if (res.getString(4).toString() == CustomerSpinner.getSelectedItem().toString()) { 

        boolean isInserted = mytempDB.insertdataintotemptable(ProducationSpinner.getSelectedItem().toString(), 
          QuantityText.getText().toString(), CustomerSpinner.getSelectedItem().toString()); 

        if (isInserted == true) 
         Toast.makeText(orderChalan.this, "Data save successfully", Toast.LENGTH_LONG).show(); 
        else 
         Toast.makeText(orderChalan.this, "Data not Inserted", Toast.LENGTH_LONG).show(); 
       } 
       else { 
        Toast.makeText(orderChalan.this, "Production ID can not different", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 

我选择第一行,并获得产品ID值。
之后,我尝试每次匹配表中的用户输入和数据,然后插入表中。
如果数据不匹配,我会显示一条错误消息“生产ID不能不同”,并且如果没有第一个输入的数据,我会检查第一次输入;在这种情况下,没有检查。

我得到的错误是“生产ID不能不同” - 我从第二次输入中收到此消息。

有什么建议吗?

+1

线的东西尝试做与.equals(),而不是刺痛比较==。您可能会发现这有用[如何比较Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – MikeT

回答

0

我在描述逻辑。你必须在你的代码中做什么。

  1. 首先检查您的表是否包含任何数据。
  2. 如果表为空,则将当前数据插入表中。
  3. 如果表格不为空,则运行查询以检查表格中是否有当前“生产ID”。查询“从TABLE_NAME选择*,其中列名(产品ID)=当前的产品ID。
  4. 如果Cursor.getCount> 0
    //目前生产的ID存在
    其他
    //表
  5. 插入当前细节
0

我相信,你所描述的问题,是由于使用==比较字符串。==将测试如果字符串对象/实例是相同的它不比较由字符串内的值。

这就是此行

if (res.getString(4).toString() == CustomerSpinner.getSelectedItem().toString()) { 

将始终返回false。

而不是使用==的需要实现.equals()

因此,沿着

if ((res.getString(4).toString()).equals(CustomerSpinner.getSelectedItem().toString())) {