栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java之JDBC 概述和快速入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java之JDBC 概述和快速入门

文章目录

1、JDBC 概述

1.1、基本介绍1.2、模拟 JDBC1.3、JDBC 带来的好处1.4、JDBC API 2、JDBC 快速入门

2.1、JDBC 程序编写步骤2.2、安装驱动的步骤2.3、JDBC 第一个程序2.4、代码实现2.5、获取数据库连接 5 种方式

2.5.1、方式 12.5.2、方式 22.5.3、方式 32.5.4、方式 42.5.5、方式 5

1、JDBC 概述 1.1、基本介绍


1.2、模拟 JDBC

JdbcInterface.java

package jdbc.myjdbc;


public interface JdbcInterface {
    // 连接
    public Object getConnection();

    // crud
    public void crud();

    // 关闭连接
    public void close();
}

TestJDBC.java

package jdbc.myjdbc;

public class TestJDBC {
    public static void main(String[] args) {
        // 完成对 mysql 的操作
        JdbcInterface jdbcInterface = new MysqlJdbcImpl();
        jdbcInterface.getConnection();  // 通过接口来调用实现类[动态绑定]
        jdbcInterface.crud();
        jdbcInterface.close();

        // 完成对 oracle 的操作
        jdbcInterface = new OracleJdbcImpl();
        jdbcInterface.getConnection();  // 通过接口来调用实现类[动态绑定]
        jdbcInterface.crud();
        jdbcInterface.close();
    }
}

MysqlJdbcImpl.java

package jdbc.myjdbc;


public class MysqlJdbcImpl implements JdbcInterface {
    @Override
    public Object getConnection() {
        System.out.println("得到 mysql 的连接");
        return null;
    }

    @Override
    public void crud() {
        System.out.println("完成 mysql 增删改查");
    }

    @Override
    public void close() {
        System.out.println("关闭 mysql 的连接");
    }
}

OracleJdbcImpl.java

package jdbc.myjdbc;


public class OracleJdbcImpl implements JdbcInterface {
    @Override
    public Object getConnection() {
        System.out.println("得到 oracle 的连接 升级");
        return null;
    }

    @Override
    public void crud() {
        System.out.println("完成 对 oracle 的增删改查");
    }

    @Override
    public void close() {
        System.out.println("关闭 oracle 的连接");
    }
}
1.3、JDBC 带来的好处


1.4、JDBC API

2、JDBC 快速入门 2.1、JDBC 程序编写步骤

2.2、安装驱动的步骤

将 mysql.jar 拷贝到该目录下, 点击 add to project … 加入到项目中




如上步骤完成之后:

import com.mysql.jdbc.Driver; 此行导入成功

2.3、JDBC 第一个程序

创建数据表

USE user_db;
CREATE TABLE actor (-- 演员表
id INT PRIMARY KEY auto_increment,
NAME VARCHAr ( 32 ) NOT NULL DEFAULT ‘’,
sex CHAr ( 1 ) NOT NULL DEFAULT ‘女’,
borndate datetime,
phone VARCHAr ( 12 ) );

2.4、代码实现
package jdbc;


import com.mysql.jdbc.Driver;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;


public class Jdbc01 {
    public static void main(String[] args) throws SQLException {
        // 前置工作: 在项目下创建一个文件夹比如 libs
        // 将 mysql.jar 拷贝到该目录下, 点击 add to project ... 加入到项目中
        // 1. 注册驱动
        Driver driver = new Driver();  // 创建 driver 对象

        // 2. 得到连接
        // (1) jdbc:mysql:// 规定好表示协议, 通过 jdbc 的方式连接 mysql
        // (2) localhost 主机, 可以是 ip 地址
        // (3) 3306 表示 mysql 监听的端口
        // (4) user_db 连接到 mysql dbms 的哪个数据库
        // (5) mysql 的连接本质就是前面学过的 socket 连接
        // (6) ?useUnicode=true&characterEncoding=UTF-8"; 添加这行可以解决中文乱码问题(插入的数据在数据库中显示问号)
        String url = "jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=UTF-8";
        // 将 用户名和密码放入到 Properties 对象
        Properties properties = new Properties();
        // 说明 user 和 password 是规定好, 后面的值根据实际情况填写
        properties.setProperty("user", "root");  // 用户
        properties.setProperty("password", "root");  // 密码
        Connection connect = driver.connect(url, properties);

        // 3. 执行 sql
        // 添加的sql
        String sql = "insert into actor values(null, '刘德华', '男', '1970-11-11', '110')";

        // 更新的sql
        // String sql = "update actor set name='周星驰' where id = 1";

        // 删除的sql
        // String sql = "delete from actor where id = 1";

        // statement 用于执行静态 SQL 语句并返回其生成的结果的对象
        Statement statement = connect.createStatement();
        int rows = statement.executeUpdate(sql);  // 如果是 dml 语句, 返回的就是影响行数
        System.out.println(rows > 0 ? "成功" : "失败");

        // 4. 关闭连接资源
        statement.close();
        connect.close();
    }
}
2.5、获取数据库连接 5 种方式 2.5.1、方式 1

2.5.2、方式 2

2.5.3、方式 3

2.5.4、方式 4

2.5.5、方式 5

package jdbc;

import com.mysql.jdbc.Driver;
import org.junit.jupiter.api.Test;

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


@SuppressWarnings({"all"})
public class JdbcConn {
    // 方式 1
    @Test
    public void connect01() throws SQLException {
        Driver driver = new Driver();  // 创建 driver 对象
        String url = "jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=UTF-8";
        // 将 用户名和密码放入到 Properties 对象
        Properties properties = new Properties();
        // 说明 user 和 password 是规定好, 后面的值根据实际情况填写
        properties.setProperty("user", "root");  // 用户
        properties.setProperty("password", "root");  // 密码
        Connection connect = driver.connect(url, properties);
        System.out.println("方式1=" + connect);  // 方式1=com.mysql.jdbc.JDBC4Connection@d6da883
    }

    // 方式 2
    @Test
    public void connect02() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        // 使用反射加载 Driver 类, 动态加载, 更加的灵活, 减少依赖性
        Class aClass = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) aClass.newInstance();
        String url = "jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=UTF-8";
        // 将 用户名和密码放入到 Properties 对象
        Properties properties = new Properties();
        // 说明 user 和 password 是规定好, 后面的值根据实际情况填写
        properties.setProperty("user", "root");  // 用户
        properties.setProperty("password", "root");  // 密码
        Connection connect = driver.connect(url, properties);
        System.out.println("方式2=" + connect);  // 方式2=com.mysql.jdbc.JDBC4Connection@d6da883
    }

    // 方式 3 使用 DriverManager 替代 driver 进行统一管理
    @Test
    public void connect03() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
        // 使用反射加载 Driver
        Class aClass = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) aClass.newInstance();
        // 创建 url 和 user 和 password
        String url = "jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=UTF-8";
        String user = "root";
        String password = "root";
        DriverManager.registerDriver(driver);  // 注册 Driver 驱动成功
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println("方式3=" + connection);  // 方式3=com.mysql.jdbc.JDBC4Connection@45afc369
    }

    // 方式 4: 使用 Class.forName 自动完成注册驱动, 简化代码
    // 这种方式获取连接是使用的最多, 推荐使用
    @Test
    public void connect04() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
        // 使用反射加载了 Driver 类
        // 在加载 Driver 类时, 完成注册
        
        Class aClass = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) aClass.newInstance();
        // 创建 url 和 user 和 password
        String url = "jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=UTF-8";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println("方式4=" + connection);  // 方式4=com.mysql.jdbc.JDBC4Connection@d6da883
    }

    // 方式 5, 在方式 4 的基础上改进, 增加配置文件, 让连接 mysql 更加灵活
    @Test
    public void connect05() throws IOException, ClassNotFoundException, SQLException {
        // 通过 Properties 对象获取配置文件的信息
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\mysql.properties"));
        // 获取相关的值
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        String url = properties.getProperty("url");
        Class.forName(driver);  // 建议写上
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println("方式5=" + connection);  // 方式5=com.mysql.jdbc.JDBC4Connection@d6da883
    }
}

mysql.properties

user=root
password=root
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=UTF-8

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711504.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号