将记录与数据库记录进行比较是否存在

时间:2010-12-18 05:36:52

标签: android sqlite

我编写了以下代码,用于比较记录与数据库记录。比较但插入所有记录

 public void onClick(View v) {
  if(v.equals(add))
  {
     if(ifExisting())
       {
        insert();
     Log.e("Data Inserting","true");
     Intent i=new Intent(AddCategory.this,ShareFolioActivity.class);
     startActivity(i);
        //Toast.makeText(AddCategory.this, "Already exists",Toast.LENGTH_LONG).show();
         }

   else
         {
              Toast.makeText(AddCategory.this, "Already exists",Toast.LENGTH_LONG).show();
              Log.e("Data Inserting","false");
      }
  }

    }

boolean ifExisting() {

     Log.e("wquery","SELECT * FROM  sharelist  WHERE category='"+category.getText().toString()+"'");
     Cursor c = db.rawQuery( "SELECT category FROM  sharelist  WHERE category='"+category.getText().toString()+";'",null);



     if(c.getCount()==-1)
      {

       Log.e("Condition true","true");
       return false;
      } 

      else
      {
       Log.e("Condition true","false");
          return true;
      }
}

2 个答案:

答案 0 :(得分:0)

您有if(ifExisting()) { insert();

不应该是if(!ifExisting()) { insert();

否则,如果存在则插入。

答案 1 :(得分:0)

如果查询返回0行,您似乎期望c.getCount()将为-1。为什么不回0? (我不记得看到它返回-1的情况,但也许我的记忆有问题。)

无论如何,检查c.getCount() <= 0似乎更安全。

此外,此查询

 Cursor c = db.rawQuery( "SELECT category FROM  sharelist  WHERE category='"+category.getText().toString()+";'",null);

格式不正确 - 请查看";'"的结尾。你想在那里"'"。 (传递给rawQuery的查询字符串不得以分号结尾;否则,"';"将是正确的选择。)

正如其他人在其他主题上对你说的那样,你真的不想通过连接来进行查询;使用selectionArgs参数是一种更安全的传递查询值的方法。