检查值是否存在sqlite错误插入

时间:2013-03-26 04:53:27

标签: android

我有一种方法来插入数据并检查代码是否存在

如果存在则不创建插入,如果不存在则创建插入

但是当我尝试运行数据时无法插入数据库

这是我的插入代码

public void processAddA(DialogWrapper wrapper)
               {
           ContentValues values = new ContentValues(2);

            values.put(DatabaseHelper.CODE, wrapper.getCode());
            values.put(DatabaseHelper.ALAMAT, wrapper.getAlamat());
            values.put(DatabaseHelper.BATAS, wrapper.getBatas());
            values.put(DatabaseHelper.LAT, wrapper.getLat());
            values.put(DatabaseHelper.LON, wrapper.getLon());
            values.put(DatabaseHelper.LUAS, wrapper.getLuas());
            values.put(DatabaseHelper.TANGGAL_AWAL, wrapper.getTglA());
            values.put(DatabaseHelper.TANGGAL_AKHIR, wrapper.getTglB());
            values.put(DatabaseHelper.USER_ID, wrapper.getUser());
            values.put(DatabaseHelper.SENT, "0");

                  open();
                  //check if value exist or not.
                  Cursor c = database.rawQuery("SELECT * FROM petak_tetap where code='"
                            + wrapper.getCode() + "'", null);
                  if(c == null)
                  {
                  //doesn't exists therefore insert record.
                      database.insert("petak_tetap", DatabaseHelper.ALAMAT,
                                values);
                  }
                  close();
               }

如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

使用此条件它将起作用

if (c!=null && c.getCount()==0)

答案 1 :(得分:2)

首先,c永远不会为null,你应该使用

if (!c.moveToFirst())

但如果您将代码列声明为UNIQUE,然后将insertWithOnConflictSQLiteDatabase.CONFLICT_IGNORE一起用作最后一个参数,则会更容易。