JDBC-Java连接Mysql工具类

6 篇文章 0 订阅
5 篇文章 0 订阅

JDBC-Java连接Mysql工具类

首选需要一个配置文件 setting.properties
里面写上连接字符串,和你的服务器的超级管理员的账号密码

格式如下

#Thu Apr 07 16:14:58 CST 2022
pass=root123
user=root
url=jdbc\:mysql\://localhost\:3306/db11070326

也可以用代码来生成
代码如下

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

public class pro1 {
    public static void main(String[] args) throws IOException {
        Properties properties = new Properties();

        // 存值
        properties.setProperty("user","root");
        properties.setProperty("pass","root123");
        properties.setProperty("url","jdbc:mysql://localhost:3306/db11070326");

        // 定义个字符流
        FileWriter fileWriter = new FileWriter("setting.properties");

        //
        properties.store(fileWriter,null);

        fileWriter.close();
    }
}

工具类代码如下

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUtils {

    // 获取双列集合
    private static Properties properties = new Properties();

    static {

        try {
            // 获得字符数据流对象
            FileReader fileReader = new FileReader("setting.properties");
            properties.load(fileReader);

            // 关闭字符输入流对象
            fileReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection()  {


        // 定义返回值
        Connection conn = null;

        try {
            // 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 准备数据,连接字符串,用户名,密码
            String connStr = properties.getProperty("url");
            String user = properties.getProperty("user");
            String pass = properties.getProperty("pass");
            // 获取连接对象
            conn = DriverManager.getConnection(connStr, user, pass);

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        // 返回连接对象
        return conn;
    }


}

工具类添加关闭资源的方法

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {

    // 获取双列集合
    private static Properties properties = new Properties();

    static {

        try {
            // 获得字符数据流对象
            FileReader fileReader = new FileReader("setting.properties");
            properties.load(fileReader);

            // 关闭字符输入流对象
            fileReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection()  {


        // 定义返回值
        Connection conn = null;

        try {
            // 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 准备数据,连接字符串,用户名,密码
            String connStr = properties.getProperty("url");
            String user = properties.getProperty("user");
            String pass = properties.getProperty("pass");
            // 获取连接对象
            conn = DriverManager.getConnection(connStr, user, pass);

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        // 返回连接对象
        return conn;
    }

    // 关闭连接对象
    public static void close(Connection conn){
        // 判断连接对象是否为空
        if (conn == null){
            return;
        }
        
        try {
            conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    // 关闭连接对象和执行者
    public static void close(Connection conn, Statement stmt){

        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        close(conn);
        
    }

    // 关闭连接对象和执行者
    public static void close(Connection conn, Statement stmt, ResultSet rs){
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        
        close(conn,stmt);

    }
}

下面是使用效果

这是数据库

在这里插入图片描述

这是第一个版本,没有用到连接池

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class TestLogin {
    public static void main(String[] args) throws SQLException {
        // 扫描仪
        Scanner scanner = new Scanner(System.in);

        // 欢迎语句
        System.out.println("欢迎你");
        System.out.println("请输入用户名:");
        String user = scanner.next();
        System.out.println("请输入密码:");
        String pass = scanner.next();

        // 拿数据去查
        // 使用JDBC去查
        Connection conn = JDBCUtils.getConnection();

        // 获取执行者
        Statement stmt = conn.createStatement();
        String sql = String.format("SELECT * FROM `user` WHERE uname = '%s' AND pwd = '%s';", user, pass);
        ResultSet rs = stmt.executeQuery(sql);

        if (rs.next()) {
            System.out.println("登录成功");
        } else {
            System.out.println("登录失败");
        }

        // 关闭资源
        JDBCUtils.close(conn, stmt, rs);


    }
}

第二个版本使用连接池

利用这个版本较好,需要修改 druid.properties 配置文件名

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db3
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    // 连接池
    private static DataSource ds = null;

    // 获取双列集合
    private static Properties properties = new Properties();

    static {
        Properties pro = new Properties();
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
        try {
            pro.load(is);
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static Connection getConnection()  {


        // 定义返回值
        Connection conn = null;

        try {
            conn = ds.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }


        // 返回连接对象
        return conn;
    }

    // 关闭连接对象
    public static void close(Connection conn){
        // 判断连接对象是否为空
        if (conn == null){
            return;
        }

        try {
            conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    // 关闭连接对象和执行者
    public static void close(Connection conn, Statement stmt){

        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        close(conn);

    }

    // 关闭连接对象和执行者
    public static void close(Connection conn, Statement stmt, ResultSet rs){
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        close(conn,stmt);

    }
}

第三个版本添加获得数据源

package D3;

import com.alibaba.druid.pool.DruidDataSourceFactory;

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

public class JDBCUtils {
    // 连接池
    private static DataSource ds = null;

    // 获取双列集合
    private static Properties properties = new Properties();

    static {
        Properties pro = new Properties();
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
        try {
            pro.load(is);
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static Connection getConnection()  {


        // 定义返回值
        Connection conn = null;

        try {
            conn = ds.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }


        // 返回连接对象
        return conn;
    }

    // 获取数据源
    public static DataSource getDs(){
        return ds;
    }

    // 关闭连接对象
    public static void close(Connection conn){
        // 判断连接对象是否为空
        if (conn == null){
            return;
        }

        try {
            conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    // 关闭连接对象和执行者
    public static void close(Connection conn, Statement stmt){

        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        close(conn);

    }

    // 关闭连接对象和执行者
    public static void close(Connection conn, Statement stmt, ResultSet rs){
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        close(conn,stmt);

    }
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSOA6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值