2010-12-18 59 views
0

記錄我寫與數據庫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; 
     } 
} 

回答

0

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

不該比較記錄下面的代碼而不是它if(!ifExisting()) { insert();

否則,你插入,如果它存在。

+0

現在任何記錄都沒有輸入(即:顯示「已存在」) – sri 2010-12-18 06:03:59

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參數是傳遞查詢值的更安全的方法。