Я создал простую базу данных в Android.but теперь проблема стоит перед мной. Я пробовал много раз, но не решил этого. Проблема заключается в том, когда я хочу вставить новую запись, если эта запись уже введена или присутствует уже, чтобы она показала мне тост, что эта запись уже существует. DataBase class.java:Как проверить, что запись уже существует в базе данных 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});
}
}
И это мой класс Регистрации
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();
}
}
Что уникально в вашей таблице, кроме идентификатора? Если что-то существует как уникальное, то сначала проверьте, существует ли уникальный ключ или нет, затем выполните необходимую операцию. – Bharatesh
Возможный дубликат [Android-sqlite, как проверить, существует ли запись] (http://stackoverflow.com/questions/20415309/android-sqlite-how-to-check-if-a-record-exists) – Bharatesh