18_MySQL中的JDBC讲解,从初级到高级使用

0. 概述

0.1 概念:

JDBC,Java DataBase Connectivity,本质是Java官方定义的一整套Java语言操作关系型数据库的接口,由一组用java编写的类和接口组成

数据库厂商实现这个接口后提供jar包给用户使用,而我们使用JDBC实际上使用的是驱动jar包中的实现类,解决了不同数据库连接方法不同的问题(驱动就是厂商提供的操作数据库的)

在这里插入图片描述

JDBC4.3 API包括java.sql包(称为JDBC核心API)和javax.sql包(称为JDBC Optional Package API)。

0.2 JDBC使用基本步骤:

  1. 导入驱动jar包 : mysql-connector-java-5.1.37-bin.jar
    方法:

    1.为了方便管理,在项目中创建libs文件夹存放文件(new directory目录),复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
    2.jar包右键–>Add As Library(添加为库),注意全局库项目库与模块库

    一个项目只需要导入一次驱动jar包即可

  2. 注册驱动

  3. 获取数据库连接对象 Connection

  4. 书写sql语句

  5. 获取执行sql语句的对象 Statement

  6. 执行sql,接受返回结果

  7. 处理结果

  8. 释放资源

0.3 上述步骤使用工具类的简单代码演示:

但未使用数据库连接池技术与JDBCTemplate

完整的JDBC开发模板在文章末尾

jdbc.properties配置文件内容:

# properties形式的配置文件采用键值对形式
# 采用#注释
DRIVER=com.mysql.jdbc.Driver
URL=jdbc:mysql:///test_demo
UserName=root
Password=root

工具类JDBCUtils.java:

package com.Util;

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

// 0. 导入驱动,一个项目中只需要一次
 
public class JDBCUtils {
   
    // Dirver类名
    private static String DRIVER;
    // JDBC:子协议://ip:端口号/数据库名
    private static String URL;
    // 用户名
    private static String UserName;
    // 密码
    private static String Password;


    /*
     * 使用静态代码块的方法获取Driver类名,URL和用户名密码等
     * 这样子只要一运行类一被加载进内存当中就获取到了这几个参数
     * 并且在src目录下创建
     */
    static{
   
        try {
   
            //1. 创建Properties集合类。
            Properties pro = new Properties();

            //获取src路径下的文件可以通过ClassLoader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res  = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
            pro.load(new FileReader(path));

            //3. 获取数据,赋值
            URL = pro.getProperty("URL");
            UserName = pro.getProperty("UserName");
            Password = pro.getProperty("Password");
            DRIVER = pro.getProperty("DRIVER");
            //4. 注册驱动
            Class.forName(DRIVER);
        } catch (IOException e) {
   
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
   
            e.printStackTrace();
        }
    }

    /**
     * 获取数据库连接对象
     * @return
     */
    public static Connection getConn(){
   
        //5. 获取数据库连接对象
        try {
   
            return DriverManager.getConnection(URL,UserName,Password);
        } catch (SQLException e) {
   
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 释放资源方法
     * @param conn
     * @param stmt
     */
    public static void close(Connection conn, Statement stmt){
   
        try {
   
            assert stmt != null;
            stmt.close();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }

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

    /**
     * 重载释放资源方法
     * @param conn
     * @param stmt
     * @param rs
     */
    public static void close(Connection conn, Statement stmt, ResultSet rs){
   
        try {
   
            assert rs != null;
            conn.close();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }

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

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

测试/演示代码:

package com.Util;

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

// 0. 导入驱动,一个项目中只需要一次
 
public class JDBCUtils {
   
    // Dirver类名
    private static String DRIVER;
    // JDBC:子协议://ip:端口号/数据库名
    private static String URL;
    // 用户名
    private static String UserName;
    // 密码
    private static String Password;


    /*
     * 使用静态代码块的方法获取Driver类名,URL和用户名密码等
     * 这样子只要一运行类一被加载进内存当中就获取到了这几个参数
     * 并且在src目录下创建
     */
    static{
   
        try {
   
            //1. 创建Properties集合类。
            Properties pro = new Properties();

            //获取src路径下的文件可以通过ClassLoader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res  = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
            pro.load(new FileReader(path));

            //3. 获取数据,赋值
            URL = pro.getProperty("URL");
            UserName = pro.getProperty("UserName");
            Password = pro.getProperty("Password");
            DRIVER = pro.getProperty("DRIVER");
            //4. 注册驱动
            Class.forName(DRIVER);
        } catch (IOException e) {
   
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
   
            e.printStackTrace();
        }
    }

    /**
     * 获取数据库连接对象
     * @return
     */
    public static Connection getConn()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值