基于JDBC的账务管理系统(三)

简介: 基于JDBC的账务管理系统

基于JDBC的账务管理系统(二)https://developer.aliyun.com/article/1433677



数据层:

package cn.yh.dao;
import cn.yh.entity.Account;
import java.util.List;
//3.3 接口;Account的CRUD;
public interface AccountDao {
    //完善存款方法;
    public int saveMoney(Account a);
    //增加一个查看所有账户信息的方法;
    public List<Account> selectAll();
    //增加一个方法,根据时间来查询信息的方法;
    public List<Account> selectByDate(String startTime,String endTime);
    //里面增加一个查询余额的方法;
    public double selectBalance();
    //根据cardid来查询的方法即可;
}

实现类:

package cn.yh.dao;
import cn.yh.entity.Account;
import cn.yh.util.DruidUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
//3.4创建 接口的实现类;
public class AccountDaoImpl implements AccountDao {
    //类的成员变量;初始的时候,设置为null,在方法调用的时候去赋值,可以节省内存空间 ;
    Connection conn=null;
    PreparedStatement pst=null;
    ResultSet rs=null;
    //传递的参数在Account对象a里面;
    @Override
    public int saveMoney(Account a) {
        String sql="insert ac_account(sortname,type,money,createtime,description)values(?,?,?,?,?)";
        Object[]params={a.getSortname(),a.getType(),a.getMoney(),a.getCreateTime(),a.getDescription()};
        return DruidUtil.update(sql,params);
    }
    //实现这个查看所有信息的方法;
    @Override
    public List<Account> selectAll() {
        //获取链接;
       conn= DruidUtil.getConnection();
        List<Account>accountList=null;
        //语句对象;
        try {
            pst=conn.prepareStatement("select * from ac_account");
            rs=pst.executeQuery();
            accountList=new ArrayList<>();  //创建实例;
            //list:里面存放的是Account的集合;每个Account对象
            while(rs.next()){
                Account a=new Account();  //创建对象 ,下面几行是赋值;
                a.setId(rs.getInt("id"));
                a.setSortname(rs.getString("typeName"));
                a.setType(rs.getString("type"));
                a.setMoney(rs.getDouble("money"));
                a.setCreateTime(rs.getDate("createTime"));
                a.setDescription(rs.getString("description"));
                accountList.add(a);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            DruidUtil.close(rs,pst,conn);
        }
        return accountList;
    }
    @Override
    public List<Account> selectByDate(String startTime, String endTime) {
        conn=DruidUtil.getConnection();
        List<Account> accountList=null;
        try {
            pst=conn.prepareStatement("select * from ac_account where createTime between ? and ?"); //复习sql
            //需要赋值给?
            pst.setString(1,startTime);
            pst.setString(2,endTime);
            rs=pst.executeQuery();  //结果集对象获取;
            accountList=new ArrayList<>();  //作用域,在try{}有效;  100万亿津巴布韦币;
            Account a=null;
            while(rs.next()){
                a=new Account();
                a.setId(rs.getInt("id"));
                a.setSortname(rs.getString("typeName"));
                a.setType(rs.getString("type"));
                a.setMoney(rs.getDouble("money"));
                a.setCreateTime(rs.getDate("createTime"));
                a.setDescription(rs.getString("description"));
                //添加到集合;
                accountList.add(a);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            DruidUtil.close(rs,pst,conn);
        }
        return accountList;
    }
    /*
        后续如果要扩充,根据cardid,来余额
        selectBalance(String cardid){}
        select sum(money) from ac_account group by cardid
     */
    @Override
    public double selectBalance() {
        String sql="select sum(money) from ac_account";
        conn=DruidUtil.getConnection();
        double result=0.0;
        try {
            pst=conn.prepareStatement(sql);
            rs = pst.executeQuery();
            //只查询一条数据;单行单列;
            if(rs.next()){
                result =rs.getDouble(1);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            DruidUtil.close(rs,pst,conn);
        }
        return result;
    }
}

UserDao接口

package cn.yh.dao;
import cn.yh.entity.User;
//3.创建接口:针对User表的操作;CRUD
public interface UserDao {
    //3.3.1第一个方法,是查询;User user;参数就是刚才的用户名和密码;
    public User selectUser(String username,String password);
}

实现类:

package cn.yh.dao;
import cn.yh.entity.User;
import cn.yh.util.DruidUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//3.2 UserDao的实现类;这里暂时不考虑,用户名和密码,重复;
public class UserDaoImpl implements UserDao{
    //让三个接口对象为成员变量,可以在finally访问;
    Connection conn=null;
    PreparedStatement pst=null;
    ResultSet rs=null;
    @Override
    public User selectUser(String username, String password) {
        User user=null;
        String sql="select * from ac_user where username=? and password=?";
        try {
            conn= DruidUtil.getConnection();    //
            pst= conn.prepareStatement(sql);
            pst.setString(1,username);
            pst.setString(2,password);
            rs= pst.executeQuery();
            if(rs.next()){
                user=new User();
                user.setId(rs.getInt("id"));
                user.setUserName(rs.getString("username"));
                user.setPassword(rs.getString("password"));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            DruidUtil.close(rs,pst,conn);
        }
        return user;
    }
}

618,清华社 IT BOOK 多得图书活动开始啦!活动时间为 2023 年 6 月 7 日至 6 月 18 日,清华

社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多

个 IT 开发领域,适合不同层次的读者。全场 5 折,扫码领券更有优惠哦!快来京东点击链接 IT BOOK

多得(或扫描京东二维码)查看详情吧!


目录
相关文章
|
6月前
|
Java 数据库 数据安全/隐私保护
基于JavaSE+JDBC使用控制台操作的简易购物系统【源码+数据库】
基于JavaSE+JDBC使用控制台操作的简易购物系统【源码+数据库】
|
6月前
|
Java 关系型数据库 MySQL
基于JDBC的账务管理系统(一)
基于JDBC的账务管理系统
79 0
基于JDBC的账务管理系统(一)
|
6月前
|
Java 数据库连接
基于JDBC的账务管理系统(二)
基于JDBC的账务管理系统
49 0
|
6月前
|
前端开发 Java BI
Servlet+Jsp+JDBC实现房屋租赁管理系统(源码+数据库+论文+系统详细配置指导+ppt)
Servlet+Jsp+JDBC实现房屋租赁管理系统(源码+数据库+论文+系统详细配置指导+ppt)
|
Java 关系型数据库 MySQL
JSP在线客户服务支持管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 在线客户服务支持管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
77 0
|
Java 关系型数据库 MySQL
JSP 科研管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 科研管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。系统主要采用B/S模式开发。
58 0
|
Java 关系型数据库 MySQL
JSP实践教学平台系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 实践教学平台系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,数据库文件名是jspskcsjpt.sql,系统名称kcsjpt,使用java语言开发系统主要采用B/S模式开发。
73 0
|
Java 关系型数据库 MySQL
JSP宠物寄养预约系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 宠物寄养预约系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
75 0
|
Java 关系型数据库 MySQL
JSP 教学文档管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 教学文档管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语,数据库文件名是jspsjxwd.sql,系统名称jxwd,言开发系统主要采用B/S模式开发。
70 0
|
1月前
|
Java 关系型数据库 MySQL
mysql5.7 jdbc驱动
遵循上述步骤,即可在Java项目中高效地集成MySQL 5.7 JDBC驱动,实现数据库的访问与管理。
128 1