我正在尝试避免将重复值插入android sqlite中,但由于我是android sqlite的新手,我无法弄清避免插入重复值的方法是什么。我试图在线查找解决方案,但我没有得到满意的答复。 请帮我解决这个问题。
下面给出了我的代码。
#我的Mainactivity代码:
public class Mainactivity extends AppCompatactivity implements View.OnClicklistener {
private EditText nameEditText,ageEditText,genderEditText;
MyDatabaseHelper myDatabaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nameEditText = findViewById(R.id.nameEditTextId);
ageEditText = findViewById(R.id.ageEditTextId);
genderEditText = findViewById(R.id.genderEditTextId);
Button addButton = findViewById(R.id.addButtonId);
myDatabaseHelper = new MyDatabaseHelper(this);
addButton.setOnClicklistener(this);
}
@Override
public void onClick(View view) {
String name = nameEditText.getText().toString();
String age = ageEditText.getText().toString();
String gender = genderEditText.getText().toString();
if (view.getId() == R.id.addButtonId) {
if(TextUtils.isEmpty(name) && TextUtils.isEmpty(age) && TextUtils.isEmpty(gender) ){
Toast.makeText(getapplicationContext(),"Enter details and submit ",Toast.LENGTH_LONG).show();
}
else if (TextUtils.isEmpty(name)) {
Toast.makeText(getapplicationContext(),"Insert the name first ",Toast.LENGTH_LONG).show();
}else if ( TextUtils.isEmpty(age)){
Toast.makeText(getapplicationContext(),"Insert an age ",Toast.LENGTH_LONG).show();
}else if (TextUtils.isEmpty(gender)){
Toast.makeText(getapplicationContext(),"Insert the gender ",Toast.LENGTH_LONG).show();
}else {
long rowId = myDatabaseHelper.insertData(name,age,gender);
if (rowId == -1) {
Toast.makeText(getapplicationContext(),"unsuccessfull ",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getapplicationContext(),"Row " + rowId + " is sucessfully inserted ",Toast.LENGTH_LONG).show();
}
//clear screen after inserting value;
nameEditText.setText("");
ageEditText.setText("");
genderEditText.setText("");
}
}
}
}
我的MyDataBaseHelper代码:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "Student.db";
private static final String TABLE_NAME = "student_details";
private static final String ID = "_id";
private static final String NAME = "Name";
private static final String AGE = "Age";
private static final String GENDER = "Gender";
private static final int VERSION_NUMber = 3 ;
private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+" ("+ID+" INTEGER PRIMARY KEY AUTOINCREMENT,"+NAME+" VARCHAR(255),"+AGE+" INTEGER,"+GENDER+"); ";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLE_NAME;
private Context context;
MyDatabaseHelper(@Nullable Context context) {
super(context,DATABASE_NAME,null,VERSION_NUMber);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
try {
Toast.makeText(context,"onCreate is called ",Toast.LENGTH_LONG).show();
sqLiteDatabase.execSQL( CREATE_TABLE);
}catch (Exception e){
Toast.makeText(context,"Exceptin : " +e,Toast.LENGTH_LONG).show();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase,int i,int i1) {
try {
Toast.makeText(context,"onUpgrade is called ",Toast.LENGTH_LONG).show();
sqLiteDatabase.execSQL(DROP_TABLE);
onCreate(sqLiteDatabase);
}catch (Exception e){
Toast.makeText(context,Toast.LENGTH_LONG).show();
}
}
long insertData(String name,String age,String gender){
SQLiteDatabase sqLiteDatabase = this.getwritabledatabase();
Contentvalues contentvalues = new Contentvalues();
contentvalues.put(NAME,name);
contentvalues.put(AGE,age);
contentvalues.put(GENDER,gender);
return sqLiteDatabase.insert(TABLE_NAME,contentvalues);
}
}