Я хочу создать новую таблицу в моем Database
(то есть у меня будет две таблицы).В этой таблице у меня будет только одно-единственное значение, и использование этого единственного значения - это то, что я получу его, и я выполню сложение или вычитание и вставлю / обновлю его снова для нового значения, которое было вычтено или добавлено значения (в основном этоявляется значением integer
или boolean
для десятичных дробей).Я все еще новичок в sqlite и новичок в разработке для Android.
Мой вопрос заключается в том, как мне добавить / вставить только одно значение в таблицу BY DEFAULT и как я получу и обновлю его.Потому что, когда я добавляю запрос INSERT
в само действие или в кнопку / fab, он будет добавлять новые значения каждый раз, когда я буду открывать сам фрагмент или нажимать кнопку / fab.Как у меня будет только одна информация там ПО УМОЛЧАНИЮ и как ее получить, чтобы я мог добавлять или вычитать значения к ней и обновлять их для нового значения?
Я создал две таблицы:
@Override
public void onCreate(SQLiteDatabase db) {
final String SQL_CREATE_CASHFLOW_TABLE = "CREATE TABLE " + ItemEntry.TABLE_NAME2 + " (" +
ItemEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
ItemEntry.COLUMN_INCOME + " INTEGER NOT NULL, " +
ItemEntry.COLUMN_SAVINGS + " INTEGER NOT NULL " +
");";
final String SQL_CREATE_ITEMLIST_TABLE = "CREATE TABLE " + ItemEntry.TABLE_NAME + " (" +
ItemEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
ItemEntry.COLUMN_LABEL + " TEXT NOT NULL, " +
ItemEntry.COLUMN_DETAIL + " TEXT, " +
ItemEntry.COLUMN_AMOUNT + " INTEGER NOT NULL, " +
ItemEntry.COLUMN_DATE + " TEXT " +
");";
db.execSQL(SQL_CREATE_ITEMLIST_TABLE);
db.execSQL(SQL_CREATE_CASHFLOW_TABLE);
}
Коды, которые я пытался из bk7:
public void insertOrUpdateTheIncomeAndSavings(int income, int savings){
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * from "+ItemEntry.TABLE_NAME2,null);
if(cursor.moveToNext()){
//update the values of first row here
//update income
Cursor cursor2 = sqLiteDatabase.rawQuery("UPDATE "+ItemEntry.TABLE_NAME2+" SET "+ItemEntry.COLUMN_INCOME+
" = "+ income + " WHERE "+ItemEntry._ID +" = 1",null);
}else{
//insert the value here
ContentValues cv = new ContentValues();
cv.put(ItemEntry.COLUMN_INCOME, 0);
cv.put(ItemEntry.COLUMN_SAVINGS, 0);
}
if(cursor!=null){
cursor.close();
}
sqLiteDatabase.close();
}
Как я могу сделать это в доходах Java:
package com.example.admin.test2;
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
/**
* A simple {@link Fragment} subclass.
*/
public class Income extends Fragment {
public Income() {
// Required empty public constructor
}
private EditText textInput;
private FloatingActionButton fabPlus;
private FloatingActionButton fabMinus;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate (R.layout.fragment_income, container, false);
textInput = (EditText) view.findViewById(R.id.editText2);
fabPlus = (FloatingActionButton) view.findViewById(R.id.fabPlus);
fabMinus = (FloatingActionButton) view.findViewById(R.id.fabMinus);
fabPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return view;
}
}
и получить значения из этого editText:
textInput = (EditText) view.findViewById(R.id.editText2);
Я хочу отобразить ввод, который я ввел в базу данных в этом textView, но он не работает .., пожалуйста, проверьте код:
public void getIncome() {
Cursor cur = mDatabase.rawQuery("SELECT " + ItemContract.ItemEntry.COLUMN_INCOME + " as Income FROM " + ItemContract.ItemEntry.TABLE_NAME2
, null);
if (cur.moveToFirst()) {
int incomeTotal = cur.getInt(cur.getColumnIndex("Income"));// get final total
income.setText("₱ " + incomeTotal);
}