Find simple SQLite data

2

I want to return only two simple data in TextView using SQLite . I have a common "Products" table and another "Information" temporary table that I use SUM() to add the column of the first table.

DBHelper :

    public List<ProdutoDAO> getTotais() {
            List<ProdutoDAO> list = new ArrayList<ProdutoDAO>();
            db = this.getReadableDatabase();
            cursor = db.rawQuery("SELECT SUM(" + QUANTIDADE + ") AS " + TOTAL_QUANTIDADE + ", SUM(" + TOTAL + ") AS " + TOTAL_VALOR + " FROM " + TABLE, null);
            while (cursor.isAfterLast() == false) {
                ProdutoDAO produto = new ProdutoDAO();
                produto.setTotalValor(cursor.getString(cursor.getColumnIndex(TOTAL_VALOR)));
                produto.setTotalQuantidade(cursor.getString(cursor.getColumnIndex(TOTAL_QUANTIDADE)));
                list.add(produto);
                cursor.moveToLast();
            }
            return list;
        }

Can anyone tell me what I'm doing wrong?

    
asked by anonymous 15.07.2016 / 17:42

2 answers

0

I do not understand very well, and without the error that occurs it gets a little difficult!

But I have some considerations:

  • The SUM function returns the sum of the values, then returns only one line!
  • There is no need for the method to return a list! I believe that only the object meets your need!

  • Assuming that there is only one result, then we only check if the cursor moves to the first position:

    if (cursor.moveToFirst ())

  • If so, let's popular the data.

    Here's a suggestion:

    public  ProdutoDAO getTotais() {
    
                db = this.getReadableDatabase();
                cursor = db.rawQuery("SELECT SUM(" + QUANTIDADE + ") AS " + TOTAL_QUANTIDADE + ", SUM(" + TOTAL + ") AS " + TOTAL_VALOR + " FROM " + TABLE, null);
                if (cursor.moveToFirst()) {
    
                    ProdutoDAO produto = new ProdutoDAO();
                    produto.setTotalValor(cursor.getString(cursor.getColumnIndex(TOTAL_VALOR)));
                    produto.setTotalQuantidade(cursor.getString(cursor.getColumnIndex(TOTAL_QUANTIDADE)));
                     return produto;
    
    
                }else{
    
                   return null;
    
                 }
    
     }
    
        
    18.07.2016 / 17:25
    0

    Good afternoon. I completely modified my code and solved the problem this way:

    DBHelper:

    public Produto getInfo() {
        db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery("SELECT SUM(" + TOTAL + ") AS " + TOTAL_VALOR + ", SUM(" + QUANTIDADE + ") AS " + TOTAL_QUANTIDADE + " FROM " + TABLE, null);
        Produto produto = new Produto();
        if(cursor.moveToFirst()){
            do{
                produto.setTotalValor(cursor.getString(cursor.getColumnIndex(TOTAL_VALOR)));
                produto.setTotalQuantidade(cursor.getString(cursor.getColumnIndex(TOTAL_QUANTIDADE)));
            }while(cursor.moveToNext());
        }
        onCreate(db);
        return produto;
    }
    

    Thank you guys!

        
    18.07.2016 / 21:30