簡體   English   中英

如何在SQLite中求和我的列值?

[英]How to sum my column value in SQLite?

我知道這個問題已經被問過幾次了,但是我無法為我的問題找到正確的語法。

我想總結一下“ einnahmen”的價值。

這是我的SqlDbHelper類:

public class SqlDbHelper extends SQLiteOpenHelper {

    public static final String DATABASE_TABLE = "PHONE_CONTACTS";
    public static final String COLUMN1 = "nr";
    public static final String COLUMN2 = "name";
    public static final String COLUMN3 = "einnahmen";
    public static final String COLUMN4 = "ausgaben";
    public static final String COLUMN5 = "datum";

    private static final String SCRIPT_CREATE_DATABASE =
            "create table "+ DATABASE_TABLE
                    + " (" + COLUMN1+ " integer primary key autoincrement, "
                    + COLUMN2+ " text not null, "
                    + COLUMN3 + " text not null, "
                    + COLUMN4 + " text not null, "
                    + COLUMN5 + " text not null);";

    public SqlDbHelper(Context context, String name, CursorFactory factory,
                       int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(SCRIPT_CREATE_DATABASE);


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }
}

這是我的MainActivity

public class BookActivity extends Activity {

    SqlHandler sqlHandler;

    ListView lvCustomList;
    EditText etName, etEinnahmen, etAusgaben, etDatum;
    ImageButton btn_add;
    TextView gesamteinnahmen;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_book);

        gesamteinnahmen = (TextView) findViewById(R.id.tVgesamtEinnahmen);
        lvCustomList = (ListView) findViewById(R.id.lv_custom_list);
        etName = (EditText) findViewById(R.id.et_name);
        etEinnahmen = (EditText) findViewById(R.id.et_einnahmen);
        etAusgaben = (EditText) findViewById(R.id.et_ausgaben);
        etDatum = (EditText) findViewById(R.id.et_datum);
        btn_add = (ImageButton) findViewById(R.id.btn_add);
        sqlHandler = new SqlHandler(this);

        showList();

        btn_add.setOnClickListener(new OnClickListener() {

            @SuppressLint("ShowToast")
            @Override
            public void onClick(View v) {

                String name = etName.getText().toString();
                String einnahmen = etEinnahmen.getText().toString();
                String ausgaben = etAusgaben.getText().toString();
                String datum = etDatum.getText().toString();

                if (TextUtils.isEmpty(name)) {etName.setError("Das Feld ist leer");return;}
                    else if (TextUtils.isEmpty(einnahmen)) {etEinnahmen.setError("Das Feld ist leer");return;
                }   else if (TextUtils.isEmpty(ausgaben)) {etAusgaben.setError("Das Feld ist leer");return;
                }   else if (TextUtils.isEmpty(datum)) {etDatum.setError("Das Feld ist leer");return;
                }   else {

                    Toast.makeText(BookActivity.this,"Daten wurden erfolgreich gespeichert", Toast.LENGTH_SHORT).show();

                    String query = "INSERT INTO PHONE_CONTACTS(name,einnahmen,ausgaben,datum) values " +
                            "('" + name + "','" + einnahmen  +"','" + ausgaben + "','" + datum + "')";
                    sqlHandler.executeQuery(query);

                    showList();

                    etName.setText("");
                    etEinnahmen.setText("");
                    etAusgaben.setText("");
                    etDatum.setText("");

                }
            }
        });

    }

    private void showList() {

        ArrayList contactList = new ArrayList();
        contactList.clear();
        String query = "SELECT * FROM PHONE_CONTACTS";

        Cursor c1 = sqlHandler.selectQuery(query);
        if (c1 != null && c1.getCount() != 0) {
            if (c1.moveToFirst()) {
                do {
                    ContactListItems contactListItems = new ContactListItems();

                    contactListItems.setNr(c1.getString(c1.getColumnIndex("nr")));
                    contactListItems.setName(c1.getString(c1.getColumnIndex("name")));
                    contactListItems.setEinnahmen(c1.getString(c1.getColumnIndex("einnahmen")));
                    contactListItems.setAusgaben(c1.getString(c1.getColumnIndex("ausgaben")));
                    contactListItems.setDatum(c1.getString(c1.getColumnIndex("datum")));

                    contactList.add(contactListItems);


                } while (c1.moveToNext());
            }
        }
        c1.close();

        ContactListAdapter contactListAdapter = new ContactListAdapter(
                BookActivity.this, contactList);
        lvCustomList.setAdapter(contactListAdapter);}

}

希望這段代碼對您有所幫助。

您的SQL查詢應該看起來像

query =“ SELECT *,SUM(einnahmen)作為來自PHONE_CONTACS的總和”;

在您的SqlDbHelper類中:

public long sumEinnahmen() {
    SQLiteStatement statement = getReadableDatabase().compileStatement(
        "select sum(" + COLUMN3 + " from " + DATABASE_TABLE);
    try {
        return statement.simpleQueryForLong();
    } finally {
        statement.close();
    }
}

請注意,您的列當前被聲明為text列,而不是integerreal列。 如果僅在該列中存儲數字數據,則應使用這些數字類型中的任何一種來聲明它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM