如何在同一SQLite数据库中的不同表中保存两组信息?

时间:2017-08-20 17:10:01

标签: android sqlite

我正在开发预算应用,我想让用户增加收入和费用,然后我想在概览活动中获得两组数据的总和。我在网上进行了研究,发现将这些值放在2个不同的表中是最好的方法。(如果您有任何其他想法,请告诉我。)
我如何将收入和费用放在不同的表格上,然后如何链接它们以获得总和?
我已经完成了将费用的数据保存在一个表中,但不知道如何为收入创建另一个表。请原谅我不知道最好的方法,因为我不熟悉使用SQLite。

add_expense.java

glVertexAttribPointer(texCoordIndex[1], 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2), reinterpret_cast<void*>(offsetof(Vertex2, texCoord)));
.....
glEnableVertexAttribArray(texCoordIndex[1]);

创建add_income.java也是如此。

DatabaseHelper.java

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;



public class add_expense extends AppCompatActivity {

    DatabaseHelper myDbexpense;
    EditText editAmountexpense, editDateexpense, editNotesexpense;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_expense);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_expense);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Add Expense");
        toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_back));
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        myDbexpense = new DatabaseHelper(this);

        editAmountexpense = (EditText) findViewById(R.id.amount_expense);
        editDateexpense = (EditText) findViewById(R.id.date_expense);
        editNotesexpense = (EditText) findViewById(R.id.notes_expense);
        AddData();


        Spinner spinner;
        ArrayAdapter<CharSequence> adapter;

        spinner = (Spinner) findViewById(R.id.categorydropdown_expense);
        adapter = ArrayAdapter.createFromResource(this, R.array.expensecategory_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected as category", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onBackPressed();
            }
        });

    }

    public void AddData(){
            FloatingActionButton fab2 = (FloatingActionButton) findViewById(R.id.fab_tick_expense);
            fab2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    boolean isInserted;
                    if (myDbexpense.insertData(
                            editAmountexpense.getText().toString(),
                            editDateexpense.getText().toString(),
                            editNotesexpense.getText().toString())) {
                        isInserted = true;
                        Intent intent=new Intent(add_expense.this,MainActivity.class);
                        startActivity(intent);
                    }
                    else isInserted = false;
                    if(isInserted == true)
                        Toast.makeText(add_expense.this,"Data Inserted",Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(add_expense.this,"Data not Inserted",Toast.LENGTH_LONG).show();
                }
            });

        }
    }

1 个答案:

答案 0 :(得分:0)

onCreate类的DatabaseHelper方法中创建两个表,并相应地处理插入/读取。或者,如果您想使用单个表,请使用负值和收入的正值。

有很多方法可以解决这个问题。只需要设计并决定如何实现它。

相关问题