android студия и sqlite проверяют, если имя пользователя уже существует - PullRequest
0 голосов
/ 01 марта 2020

Я не знаю, как избежать повторного значения aadhar. Пожалуйста, помогите мне кому-нибудь, это очень полезно для моего проекта колледжа. я сохранил свои данные в базе данных sqlite, мне нужно, если мы введем существующее значение, значит, показать предупреждение msg вроде «это значение уже существует» и выйти из страницы.

если кто-нибудь скажет мне, как изменить мою кодировку, и дайте мне соответствующую кодировку.

Страница для голосования. 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;
    }

}

1 Ответ

1 голос
/ 02 марта 2020

С помощью этого метода вы можете добавить ниже свой метод 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, этот метод вернет false, чтобы вы могли сохранить ваши данные.

Чтобы это работало, вы должны изменить свой метод 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;
    }
}
...