android studio 和 sqlite 检查用户名是否已经存在
android studio and sqlite check if username already exists
我不知道如何避免重复的 aadhar 值。请帮助我,这对我的大学项目非常有用。我将我的数据存储在 sqlite 数据库中,我需要,如果我们输入存在值意味着显示 "this value already exists" 之类的警报消息并退出页面。
如果有人告诉我如何修改我的编码并给我一些相关的编码。
Votingpage.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_votingpage);
myDb = new DatabaseHelper(this);
emailview = findViewById(R.id.emailview);
edtaadhar1 = findViewById(R.id.edtaadhar1);
btnlogout = findViewById(R.id.btnlogout);
btnadd = findViewById(R.id.btnadd);
radioGroup = findViewById(R.id.radioGroup);
AddData();
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
emailview.setText(firebaseUser.getEmail());
btnlogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Votingpage.this,MainActivity.class);
startActivity(intent);
}
});
}
private void AddData() {
btnadd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (edtaadhar1.getText().toString().trim().length() <= 0) {
Toast.makeText(Votingpage.this, "Please enter aadhar no", Toast.LENGTH_SHORT).show();
}else {
int radioid = radioGroup.getCheckedRadioButtonId();
radioButton = findViewById(radioid);
boolean isInserted = myDb.insertData(radioButton.getText().toString(),edtaadhar1.getText().toString());
if (isInserted = true)
Toast.makeText(Votingpage.this, "Thanks for giving your vote", Toast.LENGTH_SHORT).show();
else
Toast.makeText(Votingpage.this, "data not inserted", Toast.LENGTH_SHORT).show();
}
}
});
}
public void check_button(View v){
int radioid = radioGroup.getCheckedRadioButtonId();
radioButton = findViewById(radioid);
}
}
DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Vote.db";
public static final String TABLE_NAME = "voter_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "PARTY";
public static final String COL_3 = "AADHAR";
public DatabaseHelper(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,PARTY TEXT,AADHAR 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 party,String aadhar) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, party);
contentValues.put(COL_3, aadhar);
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1)
return false;
else
return true;
}
}
使用此方法,您可以在 insertData() 方法下方添加,您可以检查该值是否存在于您的数据库中。
private boolean isValueExist(String value){
String query = "SELECT * FROM " + TABLE_NAME + " WHERE " + COL_3 + " = ?";
String[] whereArgs = {value};
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, whereArgs);
int count = cursor.getCount();
cursor.close();
return count >= 1;
}
如果计数为 0,此方法将 return 为假,因此您可以保存数据。
要使其正常工作,您应该像这样修改 insertData() 方法,
public boolean insertData(String party,String aadhar) {
if(!isValueExist(addhar)){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, party);
contentValues.put(COL_3, aadhar);
long result = db.insert(TABLE_NAME, null, contentValues);
return result != -1;
} else {
return false;
}
}
我不知道如何避免重复的 aadhar 值。请帮助我,这对我的大学项目非常有用。我将我的数据存储在 sqlite 数据库中,我需要,如果我们输入存在值意味着显示 "this value already exists" 之类的警报消息并退出页面。
如果有人告诉我如何修改我的编码并给我一些相关的编码。
Votingpage.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_votingpage);
myDb = new DatabaseHelper(this);
emailview = findViewById(R.id.emailview);
edtaadhar1 = findViewById(R.id.edtaadhar1);
btnlogout = findViewById(R.id.btnlogout);
btnadd = findViewById(R.id.btnadd);
radioGroup = findViewById(R.id.radioGroup);
AddData();
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
emailview.setText(firebaseUser.getEmail());
btnlogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Votingpage.this,MainActivity.class);
startActivity(intent);
}
});
}
private void AddData() {
btnadd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (edtaadhar1.getText().toString().trim().length() <= 0) {
Toast.makeText(Votingpage.this, "Please enter aadhar no", Toast.LENGTH_SHORT).show();
}else {
int radioid = radioGroup.getCheckedRadioButtonId();
radioButton = findViewById(radioid);
boolean isInserted = myDb.insertData(radioButton.getText().toString(),edtaadhar1.getText().toString());
if (isInserted = true)
Toast.makeText(Votingpage.this, "Thanks for giving your vote", Toast.LENGTH_SHORT).show();
else
Toast.makeText(Votingpage.this, "data not inserted", Toast.LENGTH_SHORT).show();
}
}
});
}
public void check_button(View v){
int radioid = radioGroup.getCheckedRadioButtonId();
radioButton = findViewById(radioid);
}
}
DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Vote.db";
public static final String TABLE_NAME = "voter_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "PARTY";
public static final String COL_3 = "AADHAR";
public DatabaseHelper(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,PARTY TEXT,AADHAR 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 party,String aadhar) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, party);
contentValues.put(COL_3, aadhar);
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1)
return false;
else
return true;
}
}
使用此方法,您可以在 insertData() 方法下方添加,您可以检查该值是否存在于您的数据库中。
private boolean isValueExist(String value){
String query = "SELECT * FROM " + TABLE_NAME + " WHERE " + COL_3 + " = ?";
String[] whereArgs = {value};
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, whereArgs);
int count = cursor.getCount();
cursor.close();
return count >= 1;
}
如果计数为 0,此方法将 return 为假,因此您可以保存数据。
要使其正常工作,您应该像这样修改 insertData() 方法,
public boolean insertData(String party,String aadhar) {
if(!isValueExist(addhar)){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, party);
contentValues.put(COL_3, aadhar);
long result = db.insert(TABLE_NAME, null, contentValues);
return result != -1;
} else {
return false;
}
}