记账本,C,Github,Dao
package dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import entity.Category;
import util.DBUtil; /**
* catebory表的ORM映射
*
* @author 于修彦
*
*/
public class CategoryDAO { public int getTotal() {
int total = 0;
try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "select count(*) from category"; ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
total = rs.getInt(1);
} } catch (SQLException e) { e.printStackTrace();
}
return total;
} public void add(Category category) { String sql = "insert into category(name) values(?)";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setString(1, category.getName()); ps.execute(); ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
category.setId(rs.getInt(1));
}
} catch (SQLException e) { e.printStackTrace();
}
} public void update(Category category) { String sql = "update category set name= ? where id = ?";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setString(1, category.getName());
ps.setInt(2, category.getId()); ps.execute(); } catch (SQLException e) { e.printStackTrace();
} } public void delete(int id) { try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "delete from category where id = " + id; s.execute(sql); } catch (SQLException e) { e.printStackTrace();
}
} public Category get(int id) {
Category category = null; try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "select * from category where id = " + id; ResultSet rs = s.executeQuery(sql); if (rs.next()) {
category = new Category();
String name = rs.getString(2);
category.setName(name);
category.setId(id);
} } catch (SQLException e) { e.printStackTrace();
}
return category;
} public List<Category> list() {
return list(0, Short.MAX_VALUE);
} public List<Category> list(int start, int count) {
List<Category> categorys = new ArrayList<Category>(); String sql = "select * from category order by id desc limit ?,? "; try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setInt(1, start);
ps.setInt(2, count); ResultSet rs = ps.executeQuery(); while (rs.next()) {
Category category = new Category();
int id = rs.getInt(1);
String name = rs.getString(2);
category.setId(id);
category.setName(name);
categorys.add(category);
}
} catch (SQLException e) { e.printStackTrace();
}
return categorys;
} }
dao1
package dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import entity.Config;
import util.DBUtil; /**
* 专门用于把Config实例与Config表进行ORM映射
*
* @author 于修彦
*
*/
public class ConfigDAO {
/**
* 获取总数
*
* @return
*/
public int getTotal() {
int total = 0;
String sql = "select count(*) from config";
try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ResultSet rs = ps.executeQuery();
while (rs.next()) {
total = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return total;
} /**
* 添加配置
*
* @param config
* 配置信息
* @return 成功返回true,失败返回false
*/
public boolean add(Config config) {
String sql = "insert into config(myKey,myValue) values(?,?)";
boolean flag = false;
try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ps.setString(1, config.getMyKey());
ps.setString(2, config.getMyValue());
flag = ps.execute();
ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
int id = rs.getInt(1);
config.setId(id);
}
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
} /**
* 删除配置信息
*
* @param config
* 配置
* @return 成功返回true,失败返回false
*/
public boolean delete(Config config) {
String sql = "delete from config where id = ?";
boolean flag = false;
try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ps.setInt(1, config.getId());
flag = ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
} /**
* 更新配置信息
*
* @param config
* 配置信息
* @return 成功返回true,失败返回false
*/
public boolean update(Config config) {
boolean flag = false;
String sql = "update config set myKey=?,myValue=? where id=?";
Connection conn = DBUtil.getConn();
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, config.getMyKey());
ps.setString(2, config.getMyValue());
ps.setInt(3, config.getId());
flag = ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
} /**
* 通过id获取config实例
*
* @param id
* @return config实例
*/
public Config get(int id) {
Config config = null;
String sql = "select * from config where id=?"; try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ps.setInt(1, id);
ResultSet rs = ps.executeQuery(); if (rs.next()) {
config = new Config();
config.setId(id);
config.setMyKey(rs.getString("myKey"));
config.setMyValue(rs.getString("myValue"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return config;
} /**
* 用于分页查询
*
* @param start
* 开始id
* @param count
* 每页条数
* @return config的列表
*/
public List<Config> list(int start, int count) {
List<Config> configs = new ArrayList<Config>();
String sql = "select * from config order by id desc limit ?,?"; try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) { ps.setInt(1, start);
ps.setInt(2, count);
ResultSet rs = ps.executeQuery(); while (rs.next()) {
Config config = new Config();
config.setId(rs.getInt("id"));
config.setMyKey(rs.getString("myKey"));
config.setMyValue(rs.getString("myValue")); configs.add(config);
}
} catch (SQLException e) {
e.printStackTrace();
}
return configs;
} /**
* 获取
*
* @return
*/
public List<Config> list() {
return list(0,Short.MAX_VALUE);
} /**
* 通过键获取Config实例,比如预算对应的Config实例,就会通过这种方式获取: new
* ConfigDAO().getByKey("budget");
*
* @param key
* @return config实例
*/
public Config getByKey(String key) {
Config config = null;
String sql = "select * from config where myKey=?"; try (Connection conn = DBUtil.getConn(); PreparedStatement ps = conn.prepareStatement(sql);) {
ps.setString(1, key);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
config = new Config();
config.setId(rs.getInt("id"));
config.setMyKey(key);
config.setMyValue(rs.getString("myValue"));
}
} catch (SQLException e) {
e.printStackTrace();
} return config;
} }
dao2
package dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import entity.Record;
import util.DBUtil;
import util.DateUtil; /**
* record表的映射
*
* @author 于修彦
*
*/
public class RecordDAO {
/**
* 获取总数
*
* @return 记录条数
*/
public int getTotal() {
int total = 0;
try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "select count(*) from record"; ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
total = rs.getInt(1);
}
} catch (SQLException e) { e.printStackTrace();
}
return total;
} /**
* 增加记录
*
* @param record
*/
public void add(Record record) { String sql = "insert into record values(null,?,?,?,?)";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1, record.getSpend());
ps.setInt(2, record.getCid());
ps.setString(3, record.getComment());
ps.setDate(4, DateUtil.util2sql(record.getMyDate())); ps.execute(); ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
int id = rs.getInt(1);
record.setId(id);
}
} catch (SQLException e) { e.printStackTrace();
}
} /**
* 更新记录
*
* @param record
*/
public void update(Record record) { String sql = "update record set spend= ?, cid= ?, comment =?, myDate = ? where id = ?";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setInt(1, record.getSpend());
ps.setInt(2, record.getCid());
ps.setString(3, record.getComment());
ps.setDate(4, DateUtil.util2sql(record.getMyDate()));
ps.setInt(5, record.getId()); ps.execute(); } catch (SQLException e) { e.printStackTrace();
} } /**
* 删除记录
*
* @param id
*/
public void delete(int id) { try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "delete from record where id = " + id; s.execute(sql); } catch (SQLException e) { e.printStackTrace();
}
} /**
* 根据id获取记录
*
* @param id
* @return record实例
*/
public Record get(int id) {
Record record = null; try (Connection c = DBUtil.getConn(); Statement s = c.createStatement();) { String sql = "select * from record where id = " + id; ResultSet rs = s.executeQuery(sql); if (rs.next()) {
record = new Record();
int spend = rs.getInt("spend");
int cid = rs.getInt("cid");
String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
} } catch (SQLException e) { e.printStackTrace();
}
return record;
} /**
* 获取所有记录
*
* @return
*/
public List<Record> list() {
return list(0, Short.MAX_VALUE);
} /**
* 用于分页查询
*
* @param start
* @param count
* @return
*/
public List<Record> list(int start, int count) {
List<Record> records = new ArrayList<Record>(); String sql = "select * from record order by id desc limit ?,? "; try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setInt(1, start);
ps.setInt(2, count); ResultSet rs = ps.executeQuery(); while (rs.next()) {
Record record = new Record();
int id = rs.getInt("id");
int spend = rs.getInt("spend");
int cid = rs.getInt("cid"); String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
records.add(record);
}
} catch (SQLException e) { e.printStackTrace();
}
return records;
} /**
* 获取某一项分类的记录列表
*
* @param cid
* @return
*/
public List<Record> list(int cid) {
List<Record> records = new ArrayList<Record>(); String sql = "select * from record where cid = ?"; try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) { ps.setInt(1, cid); ResultSet rs = ps.executeQuery(); while (rs.next()) {
Record record = new Record();
int id = rs.getInt("id");
int spend = rs.getInt("spend"); String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
records.add(record);
}
} catch (SQLException e) { e.printStackTrace();
}
return records;
} /**
* 获取今天的消费记录列表
*
* @return
*/
public List<Record> listToday() {
return list(DateUtil.getToday());
} /**
* 根据日期获取某一天的消费记录列表
*
* @param day
* @return
*/
public List<Record> list(Date day) {
List<Record> records = new ArrayList<Record>();
String sql = "select * from record where myDate =?";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setDate(1, DateUtil.util2sql(day)); ResultSet rs = ps.executeQuery();
while (rs.next()) {
Record record = new Record();
int id = rs.getInt("id");
int cid = rs.getInt("cid");
int spend = rs.getInt("spend"); String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
records.add(record);
}
} catch (SQLException e) { e.printStackTrace();
}
return records;
} /**
* 获取本月份消费记录
*
* @return
*/
public List<Record> listThisMonth() {
return list(DateUtil.getMonthBegin(), DateUtil.getMonthEnd());
} /**
* 获取从开始日期到结束日期的消费记录
*
* @param start
* @param end
* @return
*/
public List<Record> list(Date start, Date end) {
List<Record> records = new ArrayList<Record>();
String sql = "select * from record where myDate >=? and myDate <= ?";
try (Connection c = DBUtil.getConn(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setDate(1, DateUtil.util2sql(start));
ps.setDate(2, DateUtil.util2sql(end));
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Record record = new Record();
int id = rs.getInt("id");
int cid = rs.getInt("cid");
int spend = rs.getInt("spend"); String comment = rs.getString("comment");
Date date = rs.getDate("myDate"); record.setSpend(spend);
record.setCid(cid);
record.setComment(comment);
record.setMyDate(date);
record.setId(id);
records.add(record);
}
} catch (SQLException e) { e.printStackTrace();
}
return records;
} }
dao3
记账本,C,Github,Dao的更多相关文章
- 家庭记账本之Github账号注册与安装(二)
好多程序猿都在使用github用来存放自己的代码:但是如果仅仅用github的web版本的话:有一些功能还是需要使用git客户端工具才能操作的: 那么今天将指导大家如何安装GitHub for win ...
- 家庭记账本之GitHub账号注册与安装(一)
账号注册 1.github是世纪上最大的开源代码托管网站.因为是国外网站,很多人在注册的时候因为不熟悉英语而犯了难. 2.百度搜索github进入官网.如果你已经有账号密码,那么点击右上角的sign ...
- 安卓开发实战-记账本APP(六)
记账本APP开发---终结篇 昨天的动态数字录屏奉上:在抖音上拍了一个(ps:欢迎点赞) https://v.douyin.com/poEjmG/ 今天将图表的内容进行了制作,我用的是MPChart的 ...
- 家庭版记账本app开发完成
经过这几天关于android的相关学习,对于家庭版记账本app以及开发结束. 实现的功能为:用户的注册.登录.添加支出账单.添加收入账单.显示所有的该用户的账单情况(收入和支出).生产图表(直观的显示 ...
- 记账本NABCD分析
学生记账本NABCD分析 N(Need,需求) 随着我们进入大学开始逐步的扩大自己的消费水平,而我们每天无法准确的记住一笔一笔的消费记录.常常,每一个月末时我们在宿舍楼道听到不少学生抱怨这个月怎么花钱 ...
- 记账本APP(2)
今天下载了Hbuiler,生成了一个记账本APP,目前里面只可以 输入今日消费 明天将会做出来记录以及计算总额于月消费.
- 简单记账本APP开发一
在对Android的一些基础的知识有了一定了解,以及对于AndroidStudio的如何使用有了 一定的熟悉后,决定做一个简单的记账本APP 开发流程 1.记账本的页面 2.可以添加新的账目 (一)页 ...
- Android开发实战——记账本(2)
开发日志(2)——Bean目录以及数据库 首先编写一些自己生成的数据进行测试,看一下能否显示在模拟器上.那前提就是先写出bean目录,这和之前学的Javaweb步骤差不多.bean目录有三个变量事件. ...
- 进度1_家庭记账本App
今天完成了昨天的初步构想,详细介绍见上一篇博客,具体项目结构和案例如下: MainActivity.java: package com.example.familybooks; import andr ...
随机推荐
- [LeetCode&Python] Problem 844. Backspace String Compare
Given two strings S and T, return if they are equal when both are typed into empty text editors. # m ...
- 《Linux内核原理与分析》第八周作业
课本:第七章 可执行程序工作原理 ELF目标文件格式 目标文件:编译器生成的文件. 目标文件的格式:out格式.COFF格式.PE(windows)格式.ELF(Linux)格式. ELF(Execu ...
- Redhat 6.5安装JDK和Tomcat小记
下面将今天在Linux 6.5环境安装JDK和Tomcat的过程记录下来,以备以后查用. Linux环境:Redhat 6.5 JDK版本:7u79 Tomcat版本:7.0.70 1.下载JDK文件 ...
- PythonStudy——Python 中Switch-Case 结构的实现
学习Python过程中,发现Python没有Switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现.所以不妨自己来实现Switch-Case功能. 方法一 ...
- 十八、springcloud(四)熔断器
1.熔断器(Hystrix) a.断路器机制 断路器很好理解, 当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直 ...
- Optaplanner - 从探究示例中的hello world,初步认识规划引擎的运行步骤。
上一篇我们成功以把Opotaplanner规划引擎下载回来,并把它的示例运行起来,简单解析了一下它的Cloud balance示例.这一篇我们这些示例的源代码导入到Eclipse中,看看它在后台是怎么 ...
- Raspberry3B installation
树莓派系统安装有两种方式,使用镜像安装和使用NOOBS安装.镜像方式安装传统,捣鼓的东西多一些.所以就使用NOOBS吧,NOOBS(New Out Of Box Software)开箱即用的,树莓派官 ...
- problem: vue之数组元素中的数组类型值数据改变却无法在子组件视图更新问题
问题:给父组件上的一个数组中的某个元素中的数组类型值,添加值后,数据没有在子组件上更新. 对元素添加值之后,vue的数据其实已经更新了并传给了子组件,子组件中没有立即更新. 那么这里有个问题,在子组件 ...
- 围绕Buganizer的产品流程
做技术的一定知道缺陷跟踪系统(bug系统),更不用说做测试的了,不过普遍都认为这系统是用来记录bug的,其实在google内部,这套系统是产品/项目围绕的核心.Google Buganizer扩展了类 ...
- CSS之边框
<!DOCTYPE html> <!--边框--> <html lang="en"> <head> <meta charset ...