Android开发实战——记账本(2)
2024-09-06 22:45:01
开发日志(2)——Bean目录以及数据库
首先编写一些自己生成的数据进行测试,看一下能否显示在模拟器上。那前提就是先写出bean目录,这和之前学的Javaweb步骤差不多。bean目录有三个变量事件、时间、花费。所以bean目录很容易就写出
CostBean
package com.example.firstapplication; import java.io.Serializable; public class CostBean implements Serializable { public String costTitle;
public String costDate;
public String costMoney; }
这里面的implements Serializable是之后将数据传给线性表时添加的。一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。
既然是个记账本,那里面的数据肯定不能丢失,不能出现关机了或者程序退出了数据就消失的现象。所以我们得写一个数据库,将数据保存下来
下面是对数据库进行增删改查操作的sql语句
增:(add)
db.execSQL("insert into Users (username,password) values(?,?)",new Object[]{bean.username,bean.password});
删:(delete)
db.execSQL("delete from Users where username=?",new String[]{username});
改:(update)
db.execSQL("update Users set password=? where username=?",new Object[]{bean.password,bean.username});
查:(select)
Cursor c=db.rawQuery("select * from Users where username=?",new String[]{name});
Cursor c=db.rawQuery("select * from Users",null);
数据库类
DatabaseHelper:
package com.example.firstapplication; 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 { public static final String COST_TITLE = "cost_title";
public static final String COST_DATE = "cost_date";
public static final String COST_MONEY = "cost_money";
public static final String IMOOC_COST = "imooc_cost"; public DatabaseHelper(Context context) {
super(context, "imooc_daily", null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists imooc_cost(" +
"id integer primary key," +
"cost_title varchar," +
"cost_date varchar ," +
"cost_money varchar)" );
}
public void insertCost(CostBean costBean){
SQLiteDatabase database = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(COST_TITLE,costBean.costTitle);
cv.put(COST_DATE,costBean.costDate);
cv.put(COST_MONEY,costBean.costMoney);
database.insert(IMOOC_COST,null,cv);
} public Cursor getAllCostData(){
SQLiteDatabase database = getWritableDatabase();
return database.query(IMOOC_COST,null,null,null,null,null,"cost_date ASC");
} public void deleteAlldata(){
SQLiteDatabase database = getWritableDatabase();
database.delete(IMOOC_COST,null,null); }
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } public void deleteOne(CostBean costBean) {
SQLiteDatabase database=getWritableDatabase();
database.delete(IMOOC_COST,"COST_TITLE = ? and COST_MONEY = ? and COST_DATE = ?", new String[]{""+costBean.costTitle,""+costBean.costMoney,""+costBean.costDate});
}
}
接下来就可以在Activity中调用了,将数据保存到数据库中
明天准备生成点数据,编写一下MainActivity,将数据显示出来
最新文章
- Tornado-简介
- javascript进击(一)简介
- bzoj 3669: [Noi2014]魔法森林 动态树
- Etcd学习(一)安装和.NETclient測试
- Python元组、列表--笔记
- Python查询MySQL进行远程采集图片实例
- 自行实现 dotnet core rpc
- 最新亚马逊 Coupons 功能设置教程完整攻略!
- STC项目风险分析
- 如何扩展Orchard
- JavaScript 运行机制详解
- 力扣(LeetCode)463. 岛屿的周长
- javascript高级选择器querySelector和querySelectorAll
- JasperReport 中踩过的坑
- 转一个集成速锐的ss 回头试试 补充加速一、Vultr安装锐速
- Js分支结构 switch--case
- Aqua Data Studio 数据库开发工具
- 模拟jQuery中的ready方法及实现按需加载css,js
- hdu 6063 RXD and math(快速幂)
- Invalid byte tag in constant pool: 19
热门文章
- 使用faker 生成测试数据
- Codeforces Round #624 (Div. 3)
- java 8 supplier object区别
- LCP 2-分式化简
- poj2387- Til the Cows Come Home(最短路板子题)
- 《深入理解java虚拟机》读书笔记十——第十一章
- 记录 shell学习过程(11 ) shell 对输出流的处理
- 4.Docker 操作容器
- [POI2010] GRA-The Minima Game - 贪心,dp,博弈论
- phpstorm同步服务器文件