数据库验证

时间:2011-04-06 13:02:06

标签: android sqlite

我通过编码在数据库中添加值。我希望如果已经在数据库中添加了值,则不应再次添加它。我怎样才能进行这样的验证。

我的数据库表是:

  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);";

提前完成。

3 个答案:

答案 0 :(得分:0)

我不确切知道Android是否支持此功能,但您可以使用触发器。

SQLite Documentation解释了如何在SQLite中使用它们。

答案 1 :(得分:0)

我的问题解决了。我发布了我为任何需要它的人发布的代码。

校验= 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是我的数据库表

答案 2 :(得分:0)

您对“id”已经有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约束。