当前位置: 首页 > 图灵资讯 > 技术篇> JDBC概述

JDBC概述

来源:图灵教育
时间:2023-05-28 09:30:53

1.8201.1JDBC概述基本介绍

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

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

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

4.模拟JDBC

JDBC概述_JDBC

2.模拟JDBC821代码的com.stulzl.jdbc.myjdbc.JdbcInterface接口
package com.stulzl.jdbc.myjdbc;///我们规定的Jabc接口方法   821public interface JdbcInterface {    //连接    public Object getConnection();    ////crud增删查看    public void crud();    ///关闭连接    public void close();}
MysqlJdbcimpl类
package com.stulzl.jdbc.myjdbc;///mysql数据库实现了我们模拟的jdbc接口   821public 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数据库实现Jdbccle  821public 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数据库实现JDBCC   821public 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概述_sql_02

2.JDBC的好处(示意图)

3.说明:JDBC是Java为数据库操作提供的接口API,Java程序员只需要编程这个接口。不同的数据库制造商需要为这个接口提供不同的实现。

JDBC概述_mysql_03

3.JDBCAPI822

JDBCAPI是一系列接口。它统一和规范了应用程序与数据库之间的连接,执行SQL语句,并获得返回结果。相关类别和接口在Java.sql与javax.sql包中

JDBC概述_sql_04

4.JDBC快速入门8224.1JDBC程序编写步骤

1.注册驱动-加载Driver

获得连接-获得Connection

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

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

4.2JDBC第一个程序822

添加表actor通过jdbc进行删除和修改

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程序,完成简单的操作  822public 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学习\初级\course168db_actor_
-- 创建测试表  演员表   822CREATE 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种方式8235.1方式1823

JDBC概述_JDBC_06

5.2方式2823

JDBC概述_bc_07

5.3方式3824

JDBC概述_sql_08

5.4方式4825

JDBC概述_sql_09

提示:

1.mysql驱动5.11.6可能不需要CLasss.forName("com.mysql.jdbc.Driver");

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

jar包下META-INF\services\javasql.注册Driver文本中的类名

5.5方式5826

JDBC概述_mysql_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的五种方式  823public 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下的mysqll配置文件.properties
user=rootpassword=lzlurl=jdbc:mysql://localhost:3306/hsp_db02driverdriver=com.mysql.jdbc.Driver