Создание и обновление только одного значения в Sqlite - PullRequest
0 голосов
/ 01 марта 2019

Я хочу создать новую таблицу в моем 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);
        }

Ответы [ 2 ]

0 голосов
/ 01 марта 2019
public void updateEmployeeName(String empNo,String new_empname) {
    Cursor cursor = null;
    String empName = "";
    try {
        cursor = SQLiteDatabaseInstance_.rawQuery("SELECT EmployeeName 
        FROM Employee WHERE EmpNo=?", new String[] {empNo + ""});
        if(cursor.getCount() > 0) {
            cursor.moveToFirst();
            empName = cursor.getString(cursor.getColumnIndex("EmployeeName"));
            update(empname);
        }else{
            update(new_empname);
        } 
      }finally {
        cursor.close();
     }
 }    

**Update single value use this query:-**
    public void update(){
    ContentValues cv = new ContentValues();
    cv.put(ColumnName, newValue);
    db.update(TABLE_NAME, cv, Column + "= ?", new String[] {rowId});
}

    **delete single value use this query:-**

    public void delete_singlevalue(String newValue) {
            SQLiteDatabase db = getWritableDatabase();          
            db.execSQL("delete from TABLE_NAME where 
            ColumnName="+"'"+newValue+"'");
            db.close();   
      }
0 голосов
/ 01 марта 2019

Здесь вставляли первую строку, если она не существует, и обновление первой строки существует.

     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

            }else{
                //insert the value here
            }

            if(cursor!=null){
            cursor.close();
            }
           sqLiteDatabase.close();

        }

Редактировать: добавить это в Onclick

 DBHelper dbhelper = new DBHelper(getActivity());
  int income = Integer.valueOf(incomeEditText.getText().toString());
  int savings = Integer.valueOf(savingsEditText.getText().toString());
  dbhelper.insertOrUpdateTheIncomeAndSavings(income,savings);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...