wajib rehman Ответов: 1

Как проверить запись уже существует в базе данных android


что я не так в следующем коде

Код базы данных:


    public class DatabaseOperation extends SQLiteOpenHelper {


    public static final String DATABASE_NAME = "Student.db";
    public static final String TABLE_NAME = "student_table";
    public static final String COL_1 = "ID";
    public static final String COL_2 = "NAME";
    public static final String COL_3 = "PASS";
    public static final String COL_4 = "CONTACT";
    public static final String COL_5 = "NIC";
    public static final String COL_6= "CONFIRM";

    public DatabaseOperation(Context context) {
        super(context, DATABASE_NAME, null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,PASS TEXT,CONFIRM TEXT,NIC INTEGER,CONTACT INTEGER)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }
    public  boolean insertData(String name,String pass,String confrim,String contact,String nic)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put(COL_2,name);
        cv.put(COL_3,pass);
        cv.put(COL_6,confrim);
        cv.put(COL_4,contact);
        cv.put(COL_5,nic);
       long result= db.insert(TABLE_NAME,null,cv);
        if(result==-1)
            return false;
        else
            return true;

    }
    public Cursor getAllData()
    {
        SQLiteDatabase db=this.getWritableDatabase();
        Cursor res=db.rawQuery("select * from "+TABLE_NAME,null);
        return res;
    }
    public boolean updateData(String id,String name,String pass,String confrim,String contact,String nic)
    {
      SQLiteDatabase db=this.getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put(COL_1,id);
        cv.put(COL_2,name);
        cv.put(COL_3,pass);
        cv.put(COL_6,confrim);
        cv.put(COL_4,contact);
        cv.put(COL_5,nic);
        db.update(TABLE_NAME,cv, "ID= ?",new String[]{id});
        return  true;

    }
    public Integer deletData(String id)
    {
        SQLiteDatabase db=this.getWritableDatabase();
      return  db.delete(TABLE_NAME, "ID = ?",new String[] {id});
    }
    public boolean checkIfRecordExist(String TABLE_NAME,String COL_2,String chek)
    {
        try
        {
            SQLiteDatabase db=this.getReadableDatabase();
            Cursor cursor=db.rawQuery("SELECT "+COL_2+" FROM "+TABLE_NAME+" WHERE "+COL_2+"='"+COL_2+"'",null);
            if (cursor.moveToFirst())
            {
                db.close();
                Log.d("Record  Already Exists", "Table is:"+TABLE_NAME+" ColumnName:"+COL_2);
                return true;//record Exists

            }
            Log.d("New Record  ", "Table is:"+TABLE_NAME+" ColumnName:"+COL_2+" Column Value:"+COL_2);
            db.close();
        }
        catch(Exception errorException)
        {
            Log.d("Exception occured", "Exception occured "+errorException);
           // db.close();
        }
        return false;
    }
}

and this is the activity class;

registr.setOnClickListener(new View.OnClickListener() {
            @Override
              public void onClick(View view) {

                boolean recordExists= myDb.checkIfRecordExist(DatabaseOperation.TABLE_NAME ,DatabaseOperation.COL_2 ,name.getText().toString());
                if(recordExists)
                {
                    Toast.makeText(getBaseContext(), "exist", Toast.LENGTH_SHORT).show();
                }

                boolean isInserted = myDb.insertData(name.getText().toString(), pass.getText().toString(),
                        confirm.getText().toString(), cont.getText().toString(), nic.getText().toString());


                if (isInserted == true)
                    Toast.makeText(getBaseContext(), "INSERTED", Toast.LENGTH_SHORT).show();
                else
                    Toast.makeText(getBaseContext(), "not inserted", Toast.LENGTH_SHORT).show();



              }
           });


Что я уже пробовал:

Я попробовал еще, но ничего не вышло.Я добавил этот класс, но ничего не показал, хотя он не показал мне никакой ошибки, но не смог показать результат

Richard MacCutchan

Какой результат? Вам нужно объяснить, где ваш код, по-видимому, терпит неудачу, какие результаты вы ожидаете увидеть и какие результаты вы видите на самом деле.

Вам также необходимо прекратить использовать конкатенацию строк для создания ваших SQL-операторов. Используйте правильные параметризованные запросы, как описано в документации.

wajib rehman

на самом деле мой вопрос заключается в том, чтобы проверить, найдена ли существующая запись пользователя, и показать сообщение о том, что запись уже существует

1 Ответов

Рейтинг:
0

Wendelius

Основываясь на своем коде, вы хотите предотвратить добавление строки, содержащей значение, которое уже существует в таблице. Если это так, то я бы предложил использовать Ограничение уникальности или ключевой[^] вместо того, чтобы пытаться проверить существование самостоятельно.

Взгляните на определение уникального ограничения в Язык запросов SQLite: CREATE TABLE[^]