• 进度3_家庭记账本App_Fragment使用SQLite实现简单存储及查询


    AddFragment.java:

    package com.example.familybooks;
    
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    
    import androidx.annotation.Nullable;
    import androidx.fragment.app.Fragment;
    
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.DatePicker;
    import android.widget.EditText;
    import android.widget.Toast;
    
    
    public class AddFragment extends Fragment {
        @Nullable
        String TAG="TAG";
        private EditText costTitle,costMoney;
        private Button btn_go,btn_return;
        private DatePicker costDate;
        private SQLiteDatabase database;
        DatabaseHelper helper;
    
        @Override
        public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
            View view=inflater.inflate(R.layout.activity_add,container,false);
            return view;
        }
    
       public void onActivityCreate(Bundle savedInstanceState){
            super.onActivityCreated(savedInstanceState);
    
            costTitle=(EditText)getActivity().findViewById(R.id.et_costtitle);
            costMoney=(EditText)getActivity().findViewById(R.id.et_costmoney);
            costDate=(DatePicker) getActivity().findViewById(R.id.dp_costdate);
    
            helper=new DatabaseHelper(getActivity(),"account_cost",null,1);
    
            btn_go=(Button)getActivity().findViewById(R.id.btn_go);
            btn_go.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getActivity(),"accoun_cost",Toast.LENGTH_LONG).show();
                    database=helper.getWritableDatabase();
                    Insert();
    
                    costTitle.setText("");
                    //costDate.setText("");
                    costMoney.setText("");
                    Toast.makeText(getActivity(),"accoun_cost",Toast.LENGTH_LONG).show();
                }
            });
    
            btn_return=(Button)getActivity().findViewById(R.id.btn_return);
            btn_return.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    //得到数据库
                    database=helper.getWritableDatabase();
                    //查询数据
                    Query();
    
                    Toast.makeText(getActivity(),"accoun_cost",Toast.LENGTH_LONG).show();
                }
            });
    
       }
       public void Query(){
           Cursor cursor=database.query("account_cost",null,null,null,null,null,null);
           if(cursor.moveToFirst()){
               do{
                   String title=cursor.getString(cursor.getColumnIndex("title"));
                   String date=cursor.getString(cursor.getColumnIndex("date"));
                   String money=cursor.getString(cursor.getColumnIndex("money"));
                   Log.i(TAG,"title:"+title);
                   Log.i(TAG,"date:"+date);
                   Log.i(TAG,"money:"+money);
               }while(cursor.moveToNext());
           }
           cursor.close();
        }
    
        public void Insert(){
            ContentValues values=new ContentValues();
            values.put("title",costTitle.getText().toString());
            values.put("date",costTitle.getText().toString());
            values.put("money",costMoney.getText().toString());
            database.insert("account_cost",null,values);
        }
    }

    DatabaseHelper.java:

    package com.example.familybooks;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    import androidx.annotation.Nullable;
    
    public class DatabaseHelper extends SQLiteOpenHelper {
    
        private Context context;
        public DatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
            super(context,"account_daily",null, 1);
            this.context=context;
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table diary(id integer PRIMARY KEY AUTOINCREMENT,"
    
                    +"costTitle text,costDate text,costMoney text)");
    
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
            db.execSQL("drop table if exists diary");
            onCreate(db);
        }
    }

       总结:

          SQLiteOpenHelper是个抽象类,在该类中有如下两个抽象方法,SQLiteOpenHelper的子类必须实现这两个方法。
          public abstract void onCreate(SQLiteDatabase db);
          public abstract void onUpdate(SQLiteDatabase db,int oldVersion,int newVersion);

          如果数据库文件不存在,只有oncreate()被调用(该方法在创建数据库时被调用一次)。

          如果数据库文件存在,会调用onupdate()方法升级数据库,并更新版本号。

  • 相关阅读:
    利用virtual box安装ubuntu16.4,没有继续(下一步)的解决方案
    最好用的几个谷歌镜像(推荐理由:无广告)
    vs2017和vs2019专业版和企业版
    c# List根据某个属性进行分类,变成以属性名称作为分类的多个List
    vs2015安装编辑神器:resharper10.0
    c# 正则表达式替换字符串中常见的特殊字符
    IL中间语言指令大全
    c#进阶一:使用ILDASM来查看c#中间语言
    SQL server脚本语句积累
    SQLServer事务在C#当中的应用
  • 原文地址:https://www.cnblogs.com/hhjing/p/12284837.html
Copyright © 2020-2023  润新知