开发日志(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,将数据显示出来

Android开发实战——记账本(2)的更多相关文章

  1. Xamarin Android开发实战(上册)大学霸内部资料

    Xamarin Android开发实战(上册)大学霸内部资料   试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamar ...

  2. Android开发实战(申明:来源于网络)

    Android开发实战(申明:来源于网络) 地址:http://so.csdn.net/so/search/s.do?q=Android%E5%BC%80%E5%8F%91%E5%AE%9E%E6%8 ...

  3. 阅读《名师讲坛--Android开发实战经典》

    一,专心,快速阅读一本书,直到深入理解,把书读厚,再读薄,你定会有收获. 二,20171214开始阅读<名师讲坛--Android开发实战经典>,但愿自己有所收获.从今天开始养成刻录学习写 ...

  4. 我的 Android 开发实战经验总结

    我的 Android 开发实战经验总结 字数4440 阅读5137 评论43 喜欢250 曾经一直想写一篇总结 Android 开发经验的文章,预计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟 ...

  5. Android开发实战之底部Dialog弹出效果

    在Android开发中,有很多情况下我们需要使用到对话框,遗憾的是,安卓自带的对话框样式不能满足我们实际的需要,所以往往需要我们自定义对话框,具体做法:写一个对话框继承自Dialog实现他的一个构造方 ...

  6. Android开发经验01:31个Android开发实战经验

    1. 在Android library中不能使用switch-case语句访问资源ID:在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案 2. 不能 ...

  7. android开发实战-记账本APP(一)

    记账本开发流程: 对于一个记账本的初步开发而言,我实现的功能有: ①实现一个记账本的页面 ②可以添加数据并更新到页面中 ③可以将数据信息以图表的形式展现 (一)首先,制作一个记账本的页面. ①在系统自 ...

  8. android开发实战-记账本APP(二)

    继昨天的开发,继续完成今天的内容. (一)开始构建一些业务逻辑,开始构建记账本的添加一笔记账的功能. ①对fab按钮的click时间进行修改,创建一个AlertDialog.Builder对象,因此我 ...

  9. Android开发实战(二十一):浅谈android:clipChildren属性

    实现功能: 1.APP主界面底部模块栏 2.ViewPager一屏多个界面显示 3......... 首先需要了解一下这个属性的意思 ,即 是否允许子View超出父View的返回,有两个值true . ...

  10. Java系列--第七篇 基于Maven的Android开发实战项目

    本篇是基于<Android应用案例开发大全,吴亚峰等著>的项目开发实例源码,其中有些图片,我做了一些修改,用于个人学习,请勿用于商业. 1, 日程管理专家 mvn archetype:ge ...

随机推荐

  1. P1642 规划 [01分数规划]

    裸题,考虑size完了跑一个树上背包,这题没了. // by Isaunoya #include <bits/stdc++.h> using namespace std; #define ...

  2. JavaDay9(上)

    Java learning_Day9(上) 本人学习视频用的是马士兵的,也在这里献上 <链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA> ...

  3. java集合框架备忘

    List,Set,Map三者的区别? List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性质): 不允许重复的集合.不会有多 ...

  4. 关于Java8中的Comparator那些事

    在前面一篇博文中,对于java中的排序方法进行比较和具体剖析,主要是针对 Comparator接口和 Comparable接口,无论是哪种方式,都需要实现这个接口,并且重写里面的 方法.Java8中对 ...

  5. ActiveMQ注意事项

    1.消费者在消费数据的过程当中报错,那么就会自动重试        2.如果消费者报错,会自动重试,但是数据已经真实拿到,可能会造成重复消费,幂等性问题            思路,每一次监听到数据后 ...

  6. BZOJ5137&&lg4081(广义后缀自动机,set启发式合并)

    BZOJ5137&&lg4081(广义后缀自动机,set启发式合并) 题面 自己找去 HINT 给定多个文本串,让你查询每个文本串中有多少个本质不同的子串且这个子串只出现在当前这个文本 ...

  7. python里的复数complex

    复数是一个数学概念,包含了实部和虚部.在python设计语言中,可以直接定义以j为单位,也可以使用complex函数创建复数,这个函数可以传实部和虚部,也可以只传实部. 我们把形如z=a+bj(a,b ...

  8. python开发第一篇:初识python

    一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

  9. php私有组件以及创建自己的composer私有组件(packagist+git+composer)

    1.私有组件 大多数时候我们使用的都是公开可用的开源组件,但有时候如果公司使用内部开发的PHP组件,而基于许可证和安全方面的问题不能将其开源,就需要使用私有组件.对Composer而言,这是小菜一碟. ...

  10. Android Q 使用通知栏消息

    String myChannelId = "iot"; String myChannelName = "告警通知服务"; NotificationManager ...