JDBC概述

奋斗吧
奋斗吧
擅长邻域:未填写

标签: JDBC概述 Java博客 51CTO博客

2023-05-27 18:24:15 33浏览

JDBC概述,1. JDBC 概述  8201.1 基本介绍1. JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。3. JDBC的基本原理图[重要!]4. 模拟JDBC2. 模拟&nb

1. JDBC 概述  820

1.1 基本介绍

1. JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。

2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。

3. JDBC的基本原理图[重要!]

4. 模拟JDBC

JDBC概述_JDBC

2. 模拟 JDBC  821

代码在com.stulzl.jdbc.myjdbc.

接口JdbcInterface

package com.stulzl.jdbc.myjdbc;

//我们规定的Jabc接口方法   821
public interface JdbcInterface {
    //连接
    public Object getConnection();
    //crud增删改查
    public void crud();
    //关闭连接
    public void close();
}

MysqlJdbcImpl类

package com.stulzl.jdbc.myjdbc;

//mysql数据库实现了我们模拟的jdbc接口   821
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类

package com.stulzl.jdbc.myjdbc;

//模拟实现oracle数据库实现Jdbc  821
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的增删改查");
    }
}

TestJdbc测试类

package com.stulzl.jdbc.myjdbc;

//模拟完成Mysql数据库实现Jdbc   821
public class TestJdbc {
    public static void main(String[] args) {
        //完成对mysql的操作    821
        JdbcInterface jdbcInterface = new MysqlJdbcImpl();
        jdbcInterface.getConnection();//通过接口来调用方法,涉及动态绑定
        jdbcInterface.crud();
        jdbcInterface.close();

        System.out.println("===================");
        //完成对oracle的操作    821
        JdbcInterface jdbcInterface2 = new OracleJdbcImpl();
        jdbcInterface2.getConnection();//通过接口来调用方法,涉及动态绑定
        jdbcInterface2.crud();
        jdbcInterface2.close();
    }
}

2. JDBC 带来的好处   821

JDBC概述_bc_02

2. JDBC带来的好处(示意图)

3.说明:JDBC是Java提供一套用于数据库操作的接口API, Java程序员只需要面向这套接口编程即可。不同的数据库厂商,需要针对这套接口,提供不同实现。

JDBC概述_bc_03

3. JDBC API     822

JDBC API是一 系列的接口,它统一和规范了应用程序与数据库的连接、执行SQL语句,并到得到返回结果等各类操作,相关类和接口在java.sql与javax.sql包中

JDBC概述_bc_04

4. JDBC 快速入门   822

4.1 JDBC 程序编写步骤

1.注册驱动---加载Driver类

2.获取连接---得到Connection

3.执行增删改查---发送SQL给mysq|执行

4.释放资源---关闭相关连接

4.2 JDBC 第一个程序  822

通过jdbc对表actor进行添加,删除和修改操作

JDBC概述_mysql_05

代码在com.stulzl.jdbc_.

 Jdbc01
package com.stulzl.jdbc_;


import com.mysql.jdbc.Driver;

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

//这是第一个第一个Jdbc程序,完成简单的操作  822
public class Jdbc01 {
    public static void main(String[] args) throws SQLException {
        //前置工作: 在项目下创建一个文件夹比如 libs
        // 将 mysql.jar 拷贝到该目录下,点击 add to project ..加入到项目中
        //得到驱动
        Driver driver = new Driver();//创建driver对象
        //得到连接
        //(1) jdbc:mysql:// 规定好表示协议,通过 jdbc 的方式连接 mysql
        //(2) localhost 主机,可以是 ip 地址
        //(3) 3306 表示 mysql 监听的端口
        //(4) hsp_db02 连接到 mysql dbms 的哪个数据库
        //(5) mysql 的连接本质就是前面学过的 socket 连接
        String url = "jdbc:mysql://localhost:3306/hsp_db02";
        //将用户和密码放到Properties对象
        Properties properties = new Properties();
        properties.setProperty("user","root");//用户
        properties.setProperty("password","lzl");//密码
        //获取连接
        Connection connect = driver.connect(url, properties);

        //执行sql
        //添加一条sql语句
        //解释这里的null是自增长,因为数据库那边是这样设计的
        //String sql = "insert into actor values(null,'刘德华','男','1970-11-11','110')";
        //修改
        //String sql = "update actor set name='周星驰' where id = 1";
        //删除
        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?"成功":"失败");
        //关闭连接资源
        statement.close();
        connect.close();

    }
}

数据库E:\java学习\初级\course168\db_

actor_
-- 创建测试表  演员表   822
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));
SELECT * FROM actor

5. 获取数据库连接 5 种方式   823

5.1 方式1   823

JDBC概述_sql_06

5.2 方式2   823

JDBC概述_bc_07

5.3 方式3   824

JDBC概述_bc_08

5.4 方式4   825

JDBC概述_sql_09

提示:

1. mysqL驱动5.1.6可以无需CLass . forName("com.mysql.jdbc.Driver");

2.从jdk1.5以后 使用了jdbc4,不再需要显示调用class.forName()注册驱动而是自动调用驱动

jar包下META-INF\services\java sql.Driver 文本中的类名称去注册

3.建议还是写上CLass . forName("com.mysq.jdbc.Driver"),更加明确

5.5 方式5   826

JDBC概述_JDBC_10

代码在com.stulzl.jdbc_conn.

 JdbcConn

package com.stulzl.jdbc_conn;

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;

//java连接Mysql的5种方式  823
public class JdbcConn {
    @Test
    //方式1   823
    public void connect01() throws SQLException {
        Driver driver = new Driver();//创建driver对象
        String url = "jdbc:mysql://localhost:3306/hsp_db02";
        //将用户和密码放到Properties对象
        Properties properties = new Properties();
        properties.setProperty("user","root");//用户
        properties.setProperty("password","lzl");//密码
        //获取连接
        Connection connect = driver.connect(url, properties);
        System.out.println("方式1="+connect);
    }

    //方式2   823
    @Test
    public void connect02() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
        //使用反射加载 Driver 类 , 动态加载,更加的灵活,减少依赖性
        Class aClass = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver)aClass.newInstance();

        String url = "jdbc:mysql://localhost:3306/hsp_db02";
        //将用户和密码放到Properties对象
        Properties properties = new Properties();
        properties.setProperty("user","root");//用户
        properties.setProperty("password","lzl");//密码
        //获取连接
        Connection connect = driver.connect(url, properties);
        System.out.println("方式2="+connect);
    }

    //方式 3 使用 DriverManager 替代 driver 进行统一管理   824
    @Test
    public void connect03() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
        //使用反射加载Driver类
        Class aClass = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver)aClass.newInstance();

        //创建url、user和password
        String url = "jdbc:mysql://localhost:3306/hsp_db02";
        String user = "root";
        String password = "lzl";
        DriverManager.registerDriver(driver);//注册Driver驱动
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println("方式3="+connection);
    }

    //方式4 使用 Class.forName 自动完成注册驱动,简化代码 825
    //这种方式获取连接是使用的最多,推荐使用
    @Test
    public void connect04() throws ClassNotFoundException, SQLException {
        //使用反射加载Driver类
        //在加载 Driver 类时,完成注册
            /*
            源码: 1. 静态代码块,在类加载时,会执行一次.
            2. DriverManager.registerDriver(new Driver());
            3. 因此注册 driver 的工作已经完成
            static {
                try {
                    DriverManager.registerDriver(new Driver());
                } catch (SQLException var1) {
                    throw new RuntimeException("Can't register driver!");
                }
            }
            */
        Class.forName("com.mysql.jdbc.Driver");
        //创建url、user和password
        String url = "jdbc:mysql://localhost:3306/hsp_db02";
        String user = "root";
        String password = "lzl";
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println("方式4="+connection);
    }

    //方式5在方式 4 的基础上改进,增加配置文件,让连接 mysql 更加灵活  826
    @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);
    }
}

配置文件再src下面   mysql.properties

user=root
password=lzl
url=jdbc:mysql://localhost:3306/hsp_db02
driver=com.mysql.jdbc.Driver


好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695