сравнение записи с записью в базе данных, независимо от того, существует она или нет - PullRequest
0 голосов
/ 18 декабря 2010

Я написал следующий код для сравнения записи с базой данных record.its, сравнивая, но вставляя все записи

 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 голосов
/ 18 декабря 2010

Вы, кажется, ожидаете, что c.getCount() будет -1, если запрос вернет 0 строк.Почему бы не вернуть 0?(Я не помню случая, чтобы он возвращал -1, но, возможно, моя память неисправна.)

В любом случае проверка на c.getCount() <= 0 может показаться более безопасной.

Кроме того, этот запрос

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

искажен - посмотрите на конец, где у вас есть ";'".Вы хотите иметь "'" там.(Строки запроса, которые передаются в rawQuery, не должны заканчиваться точкой с запятой; в противном случае "';" будет правильным выбором.)

Как уже говорили вам в других потоках, вы на самом деле этого не делаете.хотите делать запросы конкатенацией;использование аргумента selectionArgs является гораздо более безопасным способом передачи значений запроса.

0 голосов
/ 18 декабря 2010

У вас есть if(ifExisting()) { insert();

, а не должно быть if(!ifExisting()) { insert();

В противном случае вы вставляете, если он существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...