2011-04-06 108 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约束。