• JDBC概念及获取数据库连接的5种方式


    目录

    一、JDBC概念

    JDBC的设计目的:

    JDBC工作的基本流程:

    二、JDBC获取数据库连接的5种方式

    方式一:

    方式二:

    方式三:

    方式四:

    方式五:


    一、JDBC概念

    Java DataBase Connectivity(Java数据库连接技术) 它是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口(API-它是一种可用于执行SQL语句的JavaAPI,即由一组用Java语言编写的类与接口所组成)

    JDBC的设计目的:

    它是一种规范,设计出来的主要目的是为了让各个数据库开发商为Java程序员提供标准的数据访问类和接口,使得独立于DBMS的Java应用程序的开发成为可能(数据库改变,驱动程序跟着改变,但是应用程序不变) Java设计规范接口,各大数据库产商遵守规范实现,Java程序员不需要考虑实现细节,只需要调用API即可

    JDBC工作的基本流程:

    一个基本的JDBC工作流程,分为以下几步:

    1、加载特定数据库驱动器实现类,并注册驱动器(Driver会注册到DriverManager中)

    2、根据特定的URL,返回可以接受此URL的数据库驱动对象Driver

    3、使用数据库驱动 Driver 创建数据库连接Connection会话

    4、使用 Connection对象创建 用于操作sql的Statement对象

    5、statement对象 .执行 sql语句,返回结果ResultSet 对象

    6、处理ResultSet中的结果

    7、关闭连接,释放资源

    二、JDBC获取数据库连接的5种方式

    方式一:

    1. public class ConnectionTest {
    2. @Test
    3. public void testConnection1() throws SQLException {
    4. //获取Driver实现类对象
    5. Driver driver = new com.mysql.jdbc.Driver();
    6. //jdbc:mysql: 协议
    7. //localhost ip地址
    8. //3306 MySQL数据库默认端口号
    9. //test 需要连接的数据库名称
    10. String url = "jdbc:mysql://localhost:3306/test";
    11. Properties info = new Properties();
    12. //设置连接的用户名和名称,user和password是固定的写法
    13. info.setProperty("user","root");
    14. info.setProperty("passwor","root");
    15. Connection connect = driver.connect(url, info);
    16. System.out.println(connect);
    17. }
    18. }

    方式二:

    1. public class ConnectionTest {
    2. @Test
    3. public void testConnection2() throws Exception {
    4. //1.使用反射获取Driver实现类对象
    5. Class clazz = Class.forName("com.mysql.jdbc.Driver");
    6. Driver driver = (Driver) clazz.newInstance();
    7. //2.提供需要连接的数据库
    8. String url = "jdbc:mysql://localhost:3306/test";
    9. //3.提供连接需要的用户和密码
    10. Properties info = new Properties();
    11. info.setProperty("user","root");
    12. info.setProperty("password","lxq");
    13. //获取链接
    14. Connection connect = driver.connect(url, info);
    15. System.out.println(connect);
    16. }
    17. }

    方式二是方式一的迭代,与方式一相比没有出现第三方的API,有较好的移植性

    方式三:

    1. public class ConnectionTest {
    2. @Test
    3. public void testConnection3() throws Exception {
    4. //1.使用反射获取Driver实现类对象
    5. Class clazz = Class.forName("com.mysql.jdbc.Driver");
    6. Driver driver = (Driver) clazz.newInstance();
    7. //2.提供需要连接的数据库
    8. String url = "jdbc:mysql://localhost:3306/test";
    9. //3.提供连接需要的用户和密码
    10. String user = "root";
    11. String passwor = "root";
    12. //4.注册驱动
    13. DriverManager.registerDriver(driver);
    14. //5.获取连接
    15. Connection connection = DriverManager.getConnection(url, user, passwor);
    16. System.out.println(connection);
    17. }
    18. }

    使用DriverManager(驱动管理器)替换Driver,DriverManager是jdk提供的一个类,用来完成获取连接的操作

    方式四:

    1. public class ConnectionTest {
    2. @Test
    3. public void testConnection4() throws Exception {
    4. //1.提供连接所需信息
    5. String url = "jdbc:mysql://localhost:3306/test";
    6. String user = "root";
    7. String passwor = "root";
    8. //2.使用反射加载驱动
    9. Class.forName("com.mysql.jdbc.Driver");
    10. //3.获取连接
    11. Connection connection = DriverManager.getConnection(url, user, passwor);
    12. System.out.println(connection);
    13. }
    14. }

    与方式三相比,方式四省略了如下代码:

    Driver driver = (Driver) clazz.newInstance();
    DriverManager.registerDriver(driver);

    理由是,在com.mysql.jdbc.Driver类中有如下所示的静态代码块,使用Class.forName()加载这个驱动时就会执行这个静态代码块,实现了注册驱动

    1. static {
    2. try {
    3. DriverManager.registerDriver(new Driver());
    4. } catch (SQLException var1) {
    5. throw new RuntimeException("Can't register driver!");
    6. }
    7. }

    方式五:

    1. public class ConnectionTest {
    2. @Test
    3. public void testConnection5() throws Exception {
    4. //1.获取连接所需信息
    5. InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
    6. Properties info = new Properties();
    7. info.load(is);
    8. String url = info.getProperty("url");
    9. String user = info.getProperty("user");
    10. String password = info.getProperty("passwor");
    11. String driverClass = info.getProperty("driverClass");
    12. //2.使用反射加载驱动
    13. Class.forName(driverClass);
    14. //5.获取连接
    15. Connection connection = DriverManager.getConnection(url, user, passwor);
    16. System.out.println(connection);
    17. }
    18. }

    其中配置文件jdbc.properties在src目录下:

    url=jdbc:mysql://localhost:3306/test
    user=root
    passwor=root;
    driverClass=com.mysql.jdbc.Driver

    使用配置文件的好处:

    1、实现代码和数据的分离,如果需要修改配置信息,直接在配置文件中进行修改,不需要深入代码

    2、如果修改配置信息,省去了重新编译的过程

     

  • 相关阅读:
    前端的多种克隆方式和注意事项
    Win11用户名和密码备份方法
    8.Ribbon负载均衡服务调用
    Electron学习笔记(四)
    Ubuntu20.04 lts设置开机不进图形界面直接启动程序教程
    [补题记录] Atcoder Beginner Contest 295(E)
    执行yum install时,终端一直刷重复的内容
    Spring Cloud Alibaba:Nacos服务治理平台
    2020年09月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
    量子AI取得突破性进展:大大减少所需训练数据量
  • 原文地址:https://blog.csdn.net/m0_61961937/article/details/126921772