【问题标题】:android studio and sqlite count duplicate valuesandroid studio和sqlite计算重复值
【发布时间】:2020-06-14 20:34:21
【问题描述】:

我不知道如何计算重复的派对价值。请任何人帮助我,这对我的大学项目非常有用。我将数据存储在 sqlite 数据库中,在这里我附上了我的表格截图。我需要显示有多少 DMK、ADMK 和 BJP。像 DMK = 5, ADMK = 3, BJP = 3. 显示在吐司上。

如果有人告诉我如何修改我的编码并给我一些相关的编码。

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);
        btncheck = findViewById(R.id.btncheck);
        radioGroup = findViewById(R.id.radioGroup);

        dmk = findViewById(R.id.dmk);


        AddData();


        FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
        FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
        emailview.setText(firebaseUser.getEmail());

        btncheck.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        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) {
        if (!isValueExist(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);
            return result != -1;
        }else {
                return false;

        }

    }

    private boolean isValueExist(String aadhar) {
        String query = "SELECT * FROM " + TABLE_NAME + " WHERE " + COL_3 + " = ?";
        String[] whereArgs = {aadhar};

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(query, whereArgs);

        int count = cursor.getCount();

        cursor.close();

        return count >= 1;
    }


    public Cursor getAllData() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
        return res;
    }




}

【问题讨论】:

标签: android mysql sqlite android-studio android-sqlite


【解决方案1】:

这个查询需要一个方法:

select PARTY, count(PARTY) from voter_table group by PARTY;

它将返回 2 列,即 PARTY 名称和数量。

编辑:

使用此方法获取数据:

public List<Data> getPartyCountData() {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("select PARTY, count(PARTY) from voter_table group by PARTY", null);
    List<Data> dataList = new ArrayList<>();
    while (cursor.moveToNext()) {
        String partyName = cursor.getString(0);
        Integer partyCount = cursor.getInt(1);
        Data data = new Data(partyName, partyCount);
        dataList.add(data);
    }
    return dataList;
}

并创建一个 POJO Data.java

public class Data {
    String partyName;
    Integer partyCount;

    public Data(String partyName, Integer partyCount) {
        this.partyName = partyName;
        this.partyCount = partyCount;
    }

    public String getPartyName() {
        return partyName;
    }

    public void setPartyName(String partyName) {
        this.partyName = partyName;
    }

    public Integer getPartyCount() {
        return partyCount;
    }

    public void setPartyCount(Integer partyCount) {
        this.partyCount = partyCount;
    }
}

您将在数据列表中获得所有参与方名称和数量。

【讨论】:

  • 感谢您的回答,我在哪里实现此方法以及如何修改代码,我比较新鲜,请帮助我并给我一些与我的编码相关的示例。
  • 尊敬的先生,我需要您的帮助,请提供解决方案。我不知道如何实现这个方法,给我一些例子来与我的编码相关。
  • 谢谢你的回复,如何在toast msg中显示这个方法。
猜你喜欢
  • 2012-08-22
  • 2023-03-12
  • 1970-01-01
  • 2017-07-12
  • 2021-10-25
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多