java+JDBC+Mysql实例应用(如何将三者连接起来使用)

摘要
刚学完jdbc,最近想通过Java程序连接数据库做个小系统却无从下手,先模拟了一个简单的程序来说下java+JDBC+Mysql怎么用,主要就是通过一个简单的银行操作来介绍下怎么将java+JDBC+Mysql连接起来使用。用的是idea

先来看下这次程序的大致结构:

先来做好准备工作
1、创建数据库,并向数据库中添加一些数据,方便使用,这个我就不详细说了,主要说怎么联系起来使用

2.导入jdbc连接数据库需要用到的jar包(网盘:https://pan.baidu.com/s/10JAvSr2zzCftoErT_BFW5Q
提取码:oetw ),需要导入的jar包有这些

注意: 在项目中建个libs文件夹,再将jar包复制到文件夹中,然后右键jar包,逐个添加到库才能使用

 
 
1、接下来封装一个JdbcUtils类,将获取连接、获取数据库连接、关闭资源的方法放进去

package bankSystem2;
/*定义druid的工具类*/
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JdbcUtils {
    //1.定义成员变量
    private static DataSource ds;
    //2初始化成员变量
    static {
        try {
            //1.加载配置文件
            Properties pro = new Properties();
            pro.load(JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            //2获取datasource
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /*
    *获取连接
    * */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }


    /*
    * 释放资源
    * */
    public static void close(Statement stmt,Connection conn){
        close(null,stmt,conn);
    }

    public static void close(ResultSet rs,Statement stmt, Connection conn){
        if (stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (rs != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }


    /*
    * 获取连接池的方法
    * */
    public static DataSource getDataSourse(){
        return ds;
    }
}

2、定义一个Functions类,里面封装了存款,取款,查询余额,获取数据库余额的方法
里面读取数据库数据的部分如果不懂,参考这篇博客:JDBC中使用queryForList得到数据库内容

package bankSystem2;

import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Functions {
    JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSourse());
    Scanner sc = new Scanner(System.in);
    private int userId;//定义全局变量cardId,记录哪个用户登录成功
    String name = null;

    /*
     * 登录检测方法,参数无,return condition
     * */
    public boolean check() {
        boolean condition = false;//定义登录状态
        for (int count = 0; count < 3; count++) {
            System.out.println("欢迎使用网上银行");
            System.out.println("请输入卡号:");
            int cardId = sc.nextInt();
            System.out.println("请输入密码:");
            int passWord = sc.nextInt();

            //定义sql语句返回整个数据库中所有数据对象的list集合
            String sql = "select * from user";
            List<Map<String, Object>> list = template.queryForList(sql);
            for (Map<String, Object> user : list) {//键盘输入和数据库中用户数据的比较
                if (cardId == (int) user.get("cardId") && passWord == (int) user.get("password")) {
                    name = (String) user.get("name");
                    userId = cardId;
                    return true;
                }
            }
            System.out.println("请重新验证身份信息,验证次数还有:" + (2 - count) + "次");
        }
        return false;

}

    /*
     * 定义存款的方法,参数无,return 无
     * */
    public void deposit() {
        String sql = "update user set balance = ? where cardId = ?";

        Double balance = searchBalance();//得到账户中剩余的余额

        System.out.println("请输入存款金额(1¥-50000¥):");
        Double money = sc.nextDouble();

        if (money >= 1 && money <= 50000) {//如果满足存款的区间
            template.update(sql, balance + money, userId);
            System.out.println("存款成功,已存入金额:" + money + "元  目前账户余额:" + searchBalance() + "元");
        } else {
            System.out.println("一次存款的范围在1¥-10000¥");
        }
    }

    /*
     * 定义取款的方法,参数无 return boolean是否成功
     * */
    public boolean draw() {
        String sql = "update user set balance = ? where cardId = ?";
        Double balance = searchBalance();

        System.out.println("请输入取款金额(1¥-50000¥):");
        if (sc.hasNextDouble()) {//判断用户输入是否为整数
            Double money = sc.nextDouble();
            if (money >= 1 && money <= 50000) {//判断用户输入金额是否在给定区间
                if (money <= balance) {//判断用户余额是否足够
                    template.update(sql, balance - money, userId);
                    System.out.println("取款成功,已取款:" + money + "元   目前账户余额:" + searchBalance());
                } else {
                    System.out.println("您的账户余额不足");
                    return false;
                }
            } else {
                System.out.println("取款的范围在1¥-50000¥");
                return false;
            }
        }
        return false;

    }

    /*
     * 获取账户中的余额并返回,参数无,return boolean是否成功
     * */
    public Double searchBalance() {
        String sqlSearch = "select * from user where cardId = ?";

        List<Map<String, Object>> list = template.queryForList(sqlSearch, userId);
        Map<String, Object> map = list.get(0);
        Double balance = (Double) map.get("balance");
        return balance;
    }


    /*
    * 功能选择方法,参数condition登录状态  return 无
    * */
    public void choice(boolean condition){
        Surface.home(name);//调出功能选择界面
        while (condition) {
            System.out.println("请输入要操作的序号:");
            int num = sc.nextInt();
            if (num == 1) {//存款
                deposit();
            } else if (num == 2) {
                draw();//取款

            } else if (num == 3) {
                System.out.println("您的可用余额为" + searchBalance());

            } else if (num == 0) {//退出
                return;
            } else {
                System.out.println("请重新输入:");
            }
        }
    }
}

3、Surface类,里面封装了一个显示简单窗口的方法

package bankSystem2;

public class Surface {
    //定义常用的简单界面
    public static void home(String name) {//主界面
        System.out.println("----------------------------------------");
        System.out.println("欢迎 " + name + " 使用网上银行");
        System.out.println();
        System.out.println("    1、存款");
        System.out.println("    2、取款");
        System.out.println("    3、余额");
        System.out.println("    0、退出");
        System.out.println();
        System.out.println("----------------------------------------");
    }
}

4、测试类

package bankSystem2;
//主方法
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws Exception {
        Boolean condition = false;//定义的登录状态
        JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSourse());
        Functions functions = new Functions();
        Scanner sc = new Scanner(System.in);

        /* 登录验证,返回值为是否登录成功*/
        condition = functions.check();

        /*功能选择部分*/
        functions.choice(condition);
    }
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值