首页 > 其他分享 >JDBC概述

JDBC概述

时间:2023-05-27 13:01:34浏览次数:40  
标签:jdbc String Driver properties JDBC 概述 mysql public

1. JDBC 概述  820

1.1 基本介绍

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

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

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

4. 模拟JDBC

JDBC概述_bc

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概述_JDBC_02

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

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

JDBC概述_mysql_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概述_JDBC_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概述_bc_06

5.2 方式2   823

JDBC概述_JDBC_07

5.3 方式3   824

JDBC概述_JDBC_08

5.4 方式4   825

JDBC概述_bc_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


标签:jdbc,String,Driver,properties,JDBC,概述,mysql,public
From: https://blog.51cto.com/u_15784725/6362021

相关文章

  • 封装 JDBCUtils和事务
    1. JDBC 的相关 API 小结  8322. 封装 JDBCUtils 【关闭连接, 得到连接】  8332.1 说明在jdbc操作中,获取连接和释放资源是经常使用到可以将其封装JDBC连接的具类JDBCUtils2.2 代码实现实际使用使用工具类 JDBCUtils代码在com.stulzl.utils.JDBCUtils      833......
  • 计算机及计算机软件概述
    本节课的主要内容:​计算机的基本组成部分​计算机的优势以及特点​计算机的发展趋势​计算机软件薪资待遇​学习计算机软件很难吗?需要怎么去学习?1.计算机的基本组成部分​计算机(computer)俗称电脑,是现代一种用于高速计算的电子......
  • jmeter之JDBC Connection Configuration 请求
    1、下载mysqljdbc驱动包(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错)我这里下载的是mysql-connector-j-8.0.33.jar下载完后,将jira包放在D:\jmeter\apache-jmeter-5.2.1\lib目录下,这样就jmeter中就有驱动了,重启jmeter  2.线程......
  • windows环境下 java 使用sqlite-jdbc 加载mod_spatialite用于地理空间处理
    由于项目需要,将sqlite中的数据使用空间函数(st_astext(),st_geomfromtext()等)处理空间坐标数据,这就需要加载mod_spatialite组件,从网上找了很多方法,也问了gpt,也从官网上(http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/java.html)找到了加载mod_spatialite组件的示......
  • 关于MySQL的JDBC Driver加载过程详解
    在使用JDBC时,都需要提前加载对应数据库的Driver类,MySQL为例:Class.forName("com.mysql.jdbc.Driver")但是不写这句代码也可以让 com.mysql.jdbc.Driver类成功加载,这就涉及到java.sql.DriverManager类了,先看一下代码:publicclassDriverManager{//注册驱动的集合priva......
  • Pytest - Fixture(1) - 入门&概述
    Pytest-Fixture入门&概述之前讲过测试用例的前置和后置的方法,可以使用setup和teardown函数实现,但是这种方法是用于全部测试用例的;当我有部分测试用例不需要setup的方法该怎么办?pytest提供了fixture方法,让我们可以自定义测试用例的前置及后置条件;还可以根据配置......
  • 计算机网络(一)计算机网络概述
    计算机网络概述因特网网络:许多计算机通过交换机连接在一起互联网(internet):许多网络通过路由器连接在一起因特网(Internet):全球最大的互联网,网络通过TCP/IP协议进行通信因特网发展过程分组交换网络->互联网->TCP/IP->多层次ISP结构的互联网因特网的组成主机之......
  • spring概述
    1. spring概述  81.1 来自百度百科Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring最初......
  • BenchmarkDotNet 概述--性能测试
    BenchmarkDotNet概述BenchmarkDotNethelpsyoutotransformmethodsintobenchmarks,tracktheirperformance,andsharereproduciblemeasurementexperiments.It'snoharderthanwritingunittests提取几个关键字(其实是只认识那几个英文单词)将方法转换基准测......
  • 【Kafka从入门到成神系列 一】Kafka基本概述和架构
    ......