进度3_家庭记账本App_Fragment使用SQLite实现简单存储及查询
2024-10-08 18:18:43
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()方法升级数据库,并更新版本号。
最新文章
- SharePoint 2013 搜索功能,列表项目不能完全被索引
- cocos2dx音乐与音效
- Asp.net mvc + .net ef database first 或 model first 时如何添加验证特性
- memcached+php客户端
- Android 实现书籍翻页效果----完结篇
- javaweb学习总结十九(http协议概述以及http请求信息分析)
- velocity properties
- C# 2 运算符 if
- PHP 单列模式实例讲解以及参考网址
- Android imageView图片按比例缩放
- POI不同版本替换Word模板时的问题
- 前端开发掌握nginx常用功能之server&;location匹配规则
- mesh函数
- 十三、u-boot 调试-- NOR FLASH 支持
- linux部署的flask项目配置static
- SQL Server中的数据类型
- 使用python中的matplotlib 画图,show后关闭窗口,继续运行命令
- Vue中CSS模块化最佳实践
- Mybatis 不同使用方式
- Linux运维之--LVS、Nginx、HAproxy有什么区别?