JDBC工具类--JDBCUtils

JDBCUtils
  • 目的:简化书写

  • 分析:

    1. 注册驱动也抽取

    2. 抽取一个方法获取连接对象

      • 不想传递参数,还要保证工具类的通用性。

      • 解决:配置文件

        jdbc.properties

        url =

        user=

        password=

    3. 抽取一个方法去释放资源

package com.zhiyou.util;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Enumeration;
import java.util.Properties;


public class JDBCUtils {
    /*文件只读取一次即可拿到这些值,使用静态代码块*/
    private  static  String url;
    private  static String user;
    private  static  String password;
    private  static  String driver;
    static {
        //读取资源文件
        //1.Properties

        //加载文件
        try {
            Properties properties = new Properties();
            //获取src路径下的文件的方式 ---> ClassLoader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
           URL resources = classLoader.getResource("jdbc.properties");
            String path = resources.getPath();
            properties.load(new FileReader(path));
            //获取数据,赋值
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
            driver = properties.getProperty("driver");
            Class.forName(driver);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }


    }


    // 获取连接
    // return 连接对象
    public static Connection getConnection() throws SQLException {


        return DriverManager.getConnection(url,user,password);
    }
    /*释放资源*/
    public  static void close(Statement statement , Connection connection){
         if (statement!=null){
             try {
                 statement.close();
             } catch (SQLException e) {
                 e.printStackTrace();
             }
         }
        if (connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public  static void close(ResultSet resultSet, Statement statement , Connection connection){
        if (resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

  • 练习:

    • 需求:

      1. 通过键盘录入用户名和密码
      2. 判断用户登录是否成功
        • select * from user where username = “” and password = “”;
    • 步骤:

      1. 创建一个user表

        CREATE TABLE user(
           id int PRIMARY KEY auto_increment,
           username VARCHAR(32),
           password varchar(32)
           
        );
        SELECT * FROM USER;
        
        INSERT into user VALUES(Null,'张三','123');
        INSERT into user VALUES(Null,'李四','234');
        
      2. login方法

        package com.zhiyou.demo;
        
        import com.sun.org.apache.bcel.internal.generic.RETURN;
        import com.zhiyou.util.JDBCUtils;
        
        import java.sql.*;
        import java.util.Scanner;
        
        /*
        
        
        
        *  */
        public class JDBCDemo09 {
        
            public static void main(String[] args) {
                //1. 键盘录入 接受用户名和密码
                Scanner scanner = new Scanner(System.in);
                System.out.println("输入用户名");
                String username = scanner.nextLine();
                System.out.println("输入密码");
                String password = scanner.nextLine();
                //2.调用方法
                boolean flag = new JDBCDemo09().login2(username, password);
                //3.判断结果,输出不同语句
                if (flag){
                    System.out.println("登录成功");
                }else {
                    System.out.println("用户名或密码错误");
                }
            }
          /* 预处理*/
            public boolean login2(String username,String password){
                if (username==null||password==null){
                    return false;
                }
                //连接数据库判断是否登录成功
                Connection connection =null;
                Statement statement =null;
                ResultSet resultSet =null;
                PreparedStatement preparedStatement=null;
                //1.获取连接
                try {
                    connection = JDBCUtils.getConnection();
                    //2定义sql
                    String sql = "select * from user where username = ? and password = ?";
                    //3.获取执行sql的对象
                     preparedStatement = connection.prepareStatement(sql);
                     preparedStatement.setString(1,username);
                     preparedStatement.setString(2,password);
                    //
                    resultSet = preparedStatement.executeQuery();
        
                    return  resultSet.next();
                } catch (SQLException e) {
                    e.printStackTrace();
                }finally {
                    JDBCUtils.close(resultSet,statement,connection);
                }
        
                return false;
            }
        
        
        }
        
        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值