SUM中的sqlite列的双精度值

时间:2015-04-17 17:31:13

标签: android sqlite

我必须得到列值的总和,但是我得到了表的行数。

以下是我用来检索总和值的代码:

Cursor c=sqLite.getPrezzoTotaleCarrello();

        while(c.moveToNext())
        {
            prezzoTotaleCarrello.setText(c.getString(c.getColumnIndex("Somma_totale"))); 
            Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
        }

以下是getPrezzoTotaleCarrello()方法的代码:

public Cursor getPrezzoTotaleCarrello()
    {
        String query = "select SUM(Prezzo_totale) AS Somma_totale  from Carrello";

        return getReadableDatabase().rawQuery(query, null);
    }

方法getPrezzoTotaleCarrello位于扩展SQLiteOpenHelper的类中。

Prezzo_totale是一个包含双精度值的列。 令人难以置信的是,我尝试使用包含整数值的列的相同代码并且它可以工作。 我不明白为什么会这样。

我不得不使用cursor.getDouble()而不是cursor.getString()。 现在,在切割点之后的部分存在另一个问题。例如,如果值为2.55,我在TextView 2.00中看到。

这是新代码:

Cursor c=sqLite.getPrezzoTotaleCarrello();

        while(c.moveToNext())
        {
            prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",c.getDouble(c.getColumnIndex("Somma_totale")))));
            Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
        }

新代码:

while(c.moveToNext())
        {
           // prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",c.getDouble(c.getColumnIndex("Somma_totale")))));

            Double total = c.getDouble(0);
            prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",total)));

            Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
        }

以下是所有代码:

class custom_list_one extends BaseAdapter
{
    private LayoutInflater layoutInflater;
    ViewHolder holder;
    private ArrayList<Prodotti> cartList=new ArrayList<Prodotti>();
    int cartCounter;
    Typeface type;
    Context context;
    NumberFormat format = NumberFormat.getInstance(Locale.ITALY);

    public custom_list_one(Context context, ArrayList<Prodotti> cart_list) {
        layoutInflater = LayoutInflater.from(context);
        this.cartList=cart_list;
        this.cartCounter= cartList.size();
        this.context = context;
        //type= Typeface.createFromAsset(context.getAssets(),"fonts/book.TTF");
    }

    @Override
    public int getCount() {

        return cartCounter;
    }

    @Override
    public Object getItem(int arg0) {

        return cartList.get(arg0);
    }

    @Override
    public long getItemId(int arg0) {

        return arg0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        Prodotti tempProdotti = cart_list.get(position);

        if (convertView == null)
        {
            convertView = layoutInflater.inflate(R.layout.listone_custom, null);
            holder = new ViewHolder();
            holder.nome = (TextView) convertView.findViewById(R.id.product_name);
            holder.quantita_scelta= (TextView) convertView.findViewById(R.id.quantita_scelta_carrello);
            holder.cancel = (ImageButton) convertView.findViewById(R.id.delete);
            holder.prezzo = (TextView) convertView.findViewById(R.id.prezzo);


            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();

        }

        holder.nome.setText(tempProdotti.getNome());
        holder.nome.setTypeface(type);

        holder.quantita_scelta.setText(tempProdotti.getQuantita());
        holder.quantita_scelta.setTypeface(type);


        holder.prezzo.setText(tempProdotti.getPrezzo());
        holder.prezzo.setTypeface(type);




            //otteniamo la somma di tutti i prezzi dei prodotti del carrello

        Double somma=sqLite.getPrezzoTotaleCarrello();
        Log.d(String.valueOf(somma),"Visualizziamoooooooo");
        String sommaStringa= String.valueOf(somma);
        prezzoTotaleCarrello.setText(String.valueOf(sommaStringa));
           /*
            Cursor c=sqLite.getPrezzoTotaleCarrello();
        while(c.moveToNext())
        {
           // prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",c.getDouble(c.getColumnIndex("Somma_totale")))));

            Double total = c.getDouble(0);
            prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",total)));

            Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
        }*/





           // Number number2=format.parse(tempProdotti.getPrezzo());
            //Double prezzoTotaleProdotto=number2.doubleValue();

            //aggiorniamo la casella di testo relativa alla somma totale dei prezzi dei prodotti del carrello
           // prezzoTotaleCarrello.setText( String.valueOf(String.format("%.2f", (prezzoTotale+prezzoTotaleProdotto))));
          /*
        } catch (ParseException e) {
            e.printStackTrace();
        }*/



        holder.cancel.setOnClickListener(new MyPersonalClickListener("button_delete", tempProdotti));

        return convertView;
    }
    class ViewHolder
    {
        TextView nome;
        TextView prezzo;
        TextView quantita_scelta;
        ImageButton cancel;
    }

}

1 个答案:

答案 0 :(得分:1)

像这样改变:

String query = "select SUM(Prezzo_totale) Somma_totale  from Carrello";

你的问题在这里:

Double prezo = cursor.getDouble(0);

已编辑:这是一个示例代码:

String query = "select SUM(Prezzo_totale) AS Somma_totale  from Carrello");
Cursor cursor = database.rawQuery(query, null);
if (cursor.getCount()>0) {
        cursor.moveToFirst();
        Double total = cursor.getDouble(cursor.getColumnIndex("Somma_totale"));
}

编辑2:

    //otteniamo la somma di tutti i prezzi dei prodotti del carrello

    //Double somma=sqLite.getPrezzoTotaleCarrello();
    Double somma= (Double)0;
    Cursor cursor = sqLite.getPrezzoTotaleCarrello();
    if (cursor.getCount()>0) {
    cursor.moveToFirst();
    somma = cursor.getDouble(cursor.getColumnIndex("Somma_totale"));
}    

    Log.d(String.valueOf(somma),"Visualizziamoooooooo");
    String sommaStringa= String.valueOf(somma);
    prezzoTotaleCarrello.setText(String.valueOf(sommaStringa));