prince khan
prince khan

Reputation: 11

How to check that the record is already exist in Android Database

I created a simple DataBase in Android.but now the problem is facing me. I tried many time but did not solve this. The problem is when i want to insert new record if this record is already enterd or present already so it should to show me a toast that this record is already exist. DataBase class.java:

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

 }

And this is my Registration class

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



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



          }
       });
          next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            linearLayout.setVisibility(View.INVISIBLE);
        }
       });
          load.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Cursor res= myDb.getAllData();
            if(res.getCount()==0)
            {
                showMessage("error","no data found");
                //Toast.makeText(getBaseContext(),"NO daTA found",Toast.LENGTH_SHORT).show();

            }
            StringBuffer buffer=new StringBuffer();
            while(res.moveToNext())
            {
                buffer.append("id:"+res.getString(0)+"\n");
                buffer.append("name:"+res.getString(1)+"\n");
                buffer.append("nic:"+res.getString(4)+"\n");
                buffer.append("contact:"+res.getString(5)+"\n\n");
            }
            showMessage("DATA",buffer.toString());

           }
         });
           update.setOnClickListener(new View.OnClickListener() {
           @Override
             public void onClick(View view) {
            boolean isUpdated=myDb.updateData(id.getText().toString(),name.getText().toString(),pass.getText().toString(),confirm.getText().toString(),
                    cont.getText().toString(),nic.getText().toString());

            if(isUpdated==true)

                Toast.makeText(getBaseContext(),"updated",Toast.LENGTH_SHORT).show();

            else
                Toast.makeText(getBaseContext(),"not updated",Toast.LENGTH_SHORT).show();

        }
        });
         delet.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Integer deletedRows=myDb.deletData(id.getText().toString());
            if(deletedRows > 0)
                Toast.makeText(getBaseContext(),"data
        deleted",Toast.LENGTH_SHORT).show();  
            else
                Toast.makeText(getBaseContext(),"not
  deleted",Toast.LENGTH_SHORT).show();
        }
        });


        }
        public void showMessage(String title,String message)
      {
    AlertDialog.Builder builder=new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.show();
     }

    }

Upvotes: 0

Views: 3220

Answers (2)

Sathiamour
Sathiamour

Reputation: 137

Call this method inside Register button OnClickListener - To validate entered name and password already exists in database.

     /**
 * Used to check name and password is already in db.
 *
 * @param name
 * @param pass
 * @return true - name and password already exists in db.
 * false -  name and password not exists in db.
 */
public boolean dataAlreadyExists(String name, String pass) {
    SQLiteDatabase db =...;
   String query="SELECT COUNT(*) FROM " + TABLE_NAME + " WHERE NAME ="+name+ " PASS ="+pass+";";
long count = DatabaseUtils.queryNumEntries(db,query,null);
    return count > 0;
}

Upvotes: 0

nobalG
nobalG

Reputation: 4620

The following piece of code (method) is quite handy with understandable parameters, Try it to check if some record already exists ... The following method will return true, when record is already there in your database. This method must be declared in your class DatabaseOperations

public boolean checkIfRecordExist(String nameOfTable,String columnName,String columnValue)
    {
        try
        { 
            objDatabase=this.getReadableDatabase();
            Cursor cursor=objDatabase.rawQuery("SELECT "+columnName+" FROM "+nameOfTable+" WHERE "+columnName+"='"+columnValue+"'",null);
            if (cursor.moveToFirst())
            {
                objDatabase.close();
                Log.d("Record  Already Exists", "Table is:"+nameOfTable+" ColumnName:"+columnName);
                return true;//record Exists

            }
            Log.d("New Record  ", "Table is:"+nameOfTable+" ColumnName:"+columnName+" Column Value:"+columnValue);
            objDatabase.close();        
        }
        catch(Exception errorException)
        {
            Log.d("Exception occured", "Exception occured "+errorException);
            objDatabase.close();
        }
        return false;
    }

and call it in your activity like

boolean recordExists= mydb.checkIfRecordExist(DatabaseOperations.TABLE_NAME ,DatabaseOperations.COL_1 ,valueToBeChecked)
if(recordExists)
{
    //do your stuff
}

Upvotes: 2

Related Questions