2011-04-06 10 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を削除すると、すでにプライマリキーが追加されています –

答えて

0

問題が解決しました。私はそれを必要とする人のためにしたコードを投稿しています。

check = 0; try { カーソル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データベースが列「IDに同じ値を持つ2つの列を入力できなくなりますので、あなたはすでに、「ID」にPRIMARY KEY制約を持つ

0

これはAndroidでサポートされているかどうかはわかりませんが、トリガーを使用できます。

SQLite Documentationは、SQLiteでそれらを使用する方法を説明しています。

0

私のデータベース表です"

他の列で重複を避けたい場合は、その列に対して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制約を使用することを検討してください。

関連する問題