Search simple data Sqlite

Asked

Viewed 322 times

4

I want to return only two simple data in TextView using SQLite. I have a common "Products" table and another temporary table "Information" 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 someone tell me what I’m doing wrong?

  • 2

    What error is occurring? Please explain or place the printStackTrace.

2 answers

0

Good afternoon. I completely modified my code and solved the problem in 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;
}

Personal thank you!

0

I didn’t understand very well, and without the error that occurs it gets kind of difficult!

But I have some considerations:

  1. 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 supplies its need!

  1. Assuming there is only one result, then we check only if the cursor goes to the first position:

    if (cursor.moveToFirst())

If so, we will popular the data.

Follows 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;

             }

 }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.