初识jdbc-01-基本知识

概述

  1. 持久化

把数据保存到可掉电式存储设备中以供之后使用。

  1. Java中的数据存储技术

JDBC直接访问数据库、JDO (Java Data Object )技术、 第三方O/R工具,如Hibernate, Mybatis 等

  1. jdbc介绍
    JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql),它还为访问不同的数据库提供了一种统一的途径,并且可以连接任何提供了JDBC驱动程序的数据库系统。

jdbc访问数据库图解:
在这里插入图片描述

jdbc程序编写步骤

  1. 导入java.sql包
  2. 加载并注册驱动程序
  3. 创建Connection对象
  4. 创建Statement对象
  5. 执行sql语句
  6. 进行查询则返回ResultSet对象,进行更新则无需返回,并且关闭ResultSet对象。
  7. 关闭Statement对象
  8. 关闭Connection对象

获取数据库连接

Driver

java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口

  • Oracle的驱动:oracle.jdbc.driver.OracleDriver
  • mySql的驱动: com.mysql.jdbc.Driver

加载和注册驱动:

  • 加载驱动:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名
  • 注册驱动:DriverManager 类是驱动程序管理器类,负责管理驱动程序

URL

用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。

url组成: jdbc:子协议:子名称

  • 协议:JDBC URL中的协议总是jdbc
  • 子协议:子协议用于标识一个数据库驱动程序
  • 子名称:主机名**(对应服务端的ip地址),端口号,数据库名

常用数据库的 JDBC URL:

  • MySQL的连接URL编写方式:jdbc:mysql://localhost:3306/test?user=root&password=123456
  • Oracle 9i的连接URL编写方式:jdbc:oracle:thin:@localhost:1521:test
  • SQLServer的连接URL编写方式:jdbc:sqlserver://localhost:1433:DatabaseName=test

用户名和密码

用“属性名=属性值”方式告诉数据库

连接数据库

  1. 准备一个数据库的jar包
    在这里插入图片描述
  2. 创建一个java程序
    在这里插入图片描述
  3. 在src目录下面创建一个lib包
    在这里插入图片描述
  4. 将lib包添加至库
    在这里插入图片描述
  5. 在mysql中创建一个test数据库
    在这里插入图片描述
  6. 实现连接
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class Main {

    public static void testConnection1() {
        try {
            //1.提供java.sql.Driver接口实现类的对象
            Driver driver = null;
            driver = new com.mysql.jdbc.Driver();

            //2.提供url,指明具体操作的数据
            String url = "jdbc:mysql://localhost:3306/test";

            //3.提供Properties的对象,指明用户名和密码
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "123456");

            //4.调用driver的connect(),获取连接
            Connection conn = driver.connect(url, info);
            System.out.println(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void testConnection2() {
        try {
            //1.实例化Driver
            String className = "com.mysql.jdbc.Driver";
            Class clazz = Class.forName(className);
            Driver driver = (Driver) clazz.newInstance();

            //2.提供url,指明具体操作的数据
            String url = "jdbc:mysql://localhost:3306/test";

            //3.提供Properties的对象,指明用户名和密码
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "123456");

            //4.调用driver的connect(),获取连接
            Connection conn = driver.connect(url, info);
            System.out.println(conn);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void testConnection3() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "123456";
            String driverName = "com.mysql.jdbc.Driver";

            //2.实例化Driver
            Class clazz = Class.forName(driverName);
            Driver driver = (Driver) clazz.newInstance();
            //3.注册驱动
            DriverManager.registerDriver(driver);
            //4.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    public static void testConnection4() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "123456";
            String driverName = "com.mysql.jdbc.Driver";
            //2.加载驱动 (①实例化Driver ②注册驱动)
            Class.forName(driverName);
            //3.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    public static void main(String[] args) {
        testConnection1();
        testConnection2();
        testConnection3();
        testConnection4();
    }
}

在这里插入图片描述
可以看到我们通过这四种方式都可以获取到连接对象。那么这四种方式有什么区别呢?

  • 第一种:显式出现了第三方数据库的API
  • 第二种:使用反射实例化Driver,体现了面向接口编程思想。
  • 第三种:使用DriverManager实现数据库的连接。
  • 第四种:没有显式的注册驱动了,这时因为DriverManager的源码中的静态代码块已经实现了驱动的注册。

实际项目中连接数据库

  1. 首先编写一个jdbc.properties文件
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
user=root
password=123456
  1. 实现数据库连接
public class Main {
 public static void testConnection5() throws Exception {
        //1.加载配置文件
        InputStream is = Main.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties pros = new Properties();
        pros.load(is);

        //2.读取配置信息
        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");

        //3.加载驱动
        Class.forName(driverClass);

        //4.获取连接
        Connection conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);

    }
    public static void main(String[] args) throws Exception {
        testConnection5();
    }
}

欢迎java热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏,另外对编程感兴趣的友友们可以加以下群共同学习。群号:127871664

相关推荐

  1. 90天玩转Python-02-基础知识篇:Python与PyCharm

    2024-07-22 12:40:04       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 12:40:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 12:40:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 12:40:04       45 阅读
  4. Python语言-面向对象

    2024-07-22 12:40:04       55 阅读

热门阅读

  1. C# struct里面的class是值类型还是引用类型

    2024-07-22 12:40:04       21 阅读
  2. 网络安全-网络安全及其防护措施11

    2024-07-22 12:40:04       20 阅读
  3. 算法训练营 day14 | 二叉树 part02

    2024-07-22 12:40:04       22 阅读
  4. Python爬虫技术 第08节 Cookies和Session

    2024-07-22 12:40:04       18 阅读
  5. JDK、JRE、JVM之间的关系

    2024-07-22 12:40:04       17 阅读
  6. 徐州服务器租用:BGP服务器适用于哪些场景?

    2024-07-22 12:40:04       18 阅读