• 家庭记账本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()方法升级数据库,并更新版本号。

  • 相关阅读:
    使用NuGet.Packaging打包nupkg文件
    使用csc.exe编译cs文件为dll
    QT Linux QT Linux stray \377 in program 洲际导弹
    vs qt 乱码 洲际导弹
    将Linux QT 在银河麒麟系统上 文件左上角有锁的标识 洲际导弹
    VS QT 用QT插件不能配置QT的环境,每次配置完成后,再次打开还是未能配置完成 洲际导弹
    QT 编译报错 the kit desktop QT 5.7.1 GCC 64Bit has configuration issues which might be the root cause for this problem when executing step make 问题 洲际导弹
    QT Linux 中文乱码 洲际导弹
    QT centos 设置qmake环境变量 洲际导弹
    QT 连接MySQL数据库打不开 洲际导弹
  • 原文地址:https://www.cnblogs.com/hrzgj/p/14913391.html
Copyright © 2020-2023  润新知