2011-04-06 190 views
0

我正在通過編碼在數據庫中添加值。我希望如果值已經添加到數據庫中,它不應該再次添加。我怎麼能把這種驗證。數據庫驗證

我的數據庫表:

final String DATA="create table if not exists Favorites5("+"id INTEGER PRIMARY KEY AUTOINCREMENT,"+"title TEXT,"+"employer TEXT,"+"location TEXT,"+"description TEXT,"+"city TEXT,"+"province TEXT,"+"lat TEXT,"+"log TEXT);"; 

提前感謝名單。

+0

刪除autoincrement,那麼你已經添加了主鍵na確保它能爲id – 2011-04-06 13:11:41

回答

0

我的問題解決了。我發佈我的代碼,我爲任何需要它的人所做。

check = 0;光標cur = db.query(「Favorites7」, null,null,null,null,null,null);

   cur.moveToFirst(); 
       while (cur.isAfterLast() == false) { 

        //name.append("n" + cur.getString(1)); 
        //mylist.addAll(cur.getString(i)); 
       title1.add(cur.getString(1)); 

          //nextScreenData.add(cur.getString(2).toString()); 
        cur.moveToNext(); 
       } 


       cur.close(); 
       for(int index=0; index<title1.size();index++) 
        { 
       System.out.println(title1.get(index)); 
        } 
        System.out.println("AAAAA"+str1); 
     } catch (Exception e) { 
     check=1; 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      Toast.makeText(getApplicationContext(), "No Jobs added", 
         Toast.LENGTH_SHORT).show(); 

     } 

    adtofav.setOnClickListener(new View.OnClickListener() { 


     public void onClick(View arg0) { 
      int flag=0; 
      // Adding values to database 
      if(check==0) 
      { 
      for(int j=0;j<title1.size();j++) 
       { 
       if(str1.equals(title1.get(j))) 
       { 
        flag=1; 
        break; 
       } 

       } 
      } 
      if(flag==1) 
      { 
       /*Toast.makeText(getApplicationContext(), "Jobs already added", 
          Toast.LENGTH_SHORT).show(); */ 
       AlertDialog.Builder dialog = new AlertDialog.Builder(JobDesc.this); 
        dialog.setTitle("FAVORITES DATA"); 
        dialog.setMessage("Data Already Exists"); 
        dialog.setNeutralButton("OK",null); 
        dialog.show(); 
      }else 
      {try { 
       ContentValues values = new ContentValues(); 


        values.put("title", str1); 
        values.put("employer",employee); 
        values.put("location", loc); 
        values.put("description",desc); 
        values.put("city",city); 
        values.put("province",province); 
        values.put("lat",lat); 
       values.put("log",log); 
        db.insert("Favorites7",null, values); 
        db.close(); 
      } catch (Exception e) { 
       AlertDialog.Builder dialog = new AlertDialog.Builder(JobDesc.this); 
        dialog.setTitle("FAVORITES DATA"); 
        dialog.setMessage("Data Already Added"); 
        dialog.setNeutralButton("OK",null); 
        dialog.show(); 
       // TODO Auto-generated catch block 

      } 
      } 
     } 
     }); 

這裏收藏7是我的數據庫表

0

我不知道這是否被Android支持,但你可以使用觸發器。

SQLite Documentation解釋瞭如何在SQLite中使用它們。

0

您已經有了「身份證」 PRIMARY KEY約束,所以數據庫將阻止你進入該列中的「ID具有相同值的兩行」。

如果您想防止某些其他列中出現重複,請在該列上使用UNIQUE約束。例如,要防止「標題」列中出現重複,請使用

create table if not exists Favorites5(
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    title TEXT UNIQUE,      -- Title can't be duplicated. 
    employer TEXT, 
    location TEXT, 
    description TEXT, 
    city TEXT, 
    province TEXT, 
    lat TEXT, 
    log TEXT 
); 

也考慮在所有這些列上使用NOT NULL約束。