• JDBC01-----JDBC的基本使用


    一. 什么是JDBC

    1. JDBC(Java DataBase Connectivity, java数据库连接)就是用我们的java程序去连接数据库,它是一个执行SQL语句的JAVA API。(不管是什么数据库,只要提供了JDBC驱动就行)。

      note: 上面的jar包就是连接驱动包。

    2. JDBC就是JAVA连接数据库的中间桥梁

    3. JDBC的API

    二. JDBC连接MySql

    1. 新建立一个maven项目jdbctest

    2. 在pom.xml中添加jdbc驱动依赖

    1 <dependency>
    2             <groupId>mysql</groupId>
    3             <artifactId>mysql-connector-java</artifactId>
    4             <version>6.0.6</version>
    5         </dependency>
    View Code

    3. 在com.test.jdbctest包下新建立一个class: ConnectionClass

    public class ConnectionClass {
        public static void main(String args[]) throws ClassNotFoundException, SQLException {
            //1.加载驱动(静态代码块中会创建一个驱动,来帮助我们连接JAVA到驱动之间的关联,但是驱动到数据库的连接还没有连上)
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接对象,URL是数据库地址
            String url="jdbc:mysql://localhost:3306/test";
            String user="Hermioner";
            String password="1234";
            Connection connection=DriverManager.getConnection(url, user, password);
            System.out.println(connection);//测试连接是否成功
        }
    
    }
    com.mysql.cj.jdbc.ConnectionImpl@17d99928

    说明:

    (1)加载驱动: 把com.mysql.jdbc.Driver这份字节码加载进JVM,当一份字节码被加载到JVM时,就会自动执行该字节码中的静态代码块。

    (2)Driver的源码

     1 package com.mysql.jdbc;
     2 
     3 import java.sql.SQLException;
     4 
     5 /**
     6  * Backwards compatibility to support apps that call <code>Class.forName("com.mysql.jdbc.Driver");</code>.
     7  */
     8 public class Driver extends com.mysql.cj.jdbc.Driver {
     9     public Driver() throws SQLException {
    10         super();
    11     }
    12 
    13     static {
    14         System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. "
    15                 + "The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.");
    16     }
    17 }
    View Code
     1 /*
     2   Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
     3 
     4   The MySQL Connector/J is licensed under the terms of the GPLv2
     5   <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most MySQL Connectors.
     6   There are special exceptions to the terms and conditions of the GPLv2 as it is applied to
     7   this software, see the FOSS License Exception
     8   <http://www.mysql.com/about/legal/licensing/foss-exception.html>.
     9 
    10   This program is free software; you can redistribute it and/or modify it under the terms
    11   of the GNU General Public License as published by the Free Software Foundation; version 2
    12   of the License.
    13 
    14   This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
    15   without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    16   See the GNU General Public License for more details.
    17 
    18   You should have received a copy of the GNU General Public License along with this
    19   program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth
    20   Floor, Boston, MA 02110-1301  USA
    21 
    22  */
    23 
    24 package com.mysql.cj.jdbc;
    25 
    26 import java.sql.SQLException;
    27 
    28 /**
    29  * The Java SQL framework allows for multiple database drivers. Each driver should supply a class that implements the Driver interface
    30  * 
    31  * <p>
    32  * The DriverManager will try to load as many drivers as it can find and then for any given connection request, it will ask each driver in turn to try to
    33  * connect to the target URL.
    34  * 
    35  * <p>
    36  * It is strongly recommended that each Driver class should be small and standalone so that the Driver class can be loaded and queried without bringing in vast
    37  * quantities of supporting code.
    38  * 
    39  * <p>
    40  * When a Driver class is loaded, it should create an instance of itself and register it with the DriverManager. This means that a user can load and register a
    41  * driver by doing Class.forName("foo.bah.Driver")
    42  */
    43 public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    44     //
    45     // Register ourselves with the DriverManager
    46     //
    47     static {
    48         try {
    49             java.sql.DriverManager.registerDriver(new Driver());
    50         } catch (SQLException E) {
    51             throw new RuntimeException("Can't register driver!");
    52         }
    53     }
    54 
    55     /**
    56      * Construct a new driver and register it with DriverManager
    57      * 
    58      * @throws SQLException
    59      *             if a database error occurs.
    60      */
    61     public Driver() throws SQLException {
    62         // Required for Class.forName().newInstance()
    63     }
    64 }
    View Code

    当类加载时,会执行如下静态代码块:

     static {
            try {
                java.sql.DriverManager.registerDriver(new Driver()); //在这个静态代码块里面会创建一个驱动,来帮助我们连接JAVA到驱动之间的关联,但是驱动到数据库的连接还没有连上
            } catch (SQLException E) {
                throw new RuntimeException("Can't register driver!");
            }
        }

     (3)测试连接

            除了上面的打印对象,也可以通过mysql中的命令来查看是否连接成功:show processlist;

     参考文献:

    高新强老师的视频课程:https://ke.qq.com/course/339214

  • 相关阅读:
    IDEA 中 右键新建时,没有新建class的解决方案
    Git--删除远程仓库文件但不删除本地仓库资源
    Git——跟踪或取消跟踪文件
    git命令大杂烩
    判断项目中是否有slf4j的实现类
    完美解决在Servlet中出现一个输出中文乱码的问题
    mysql常用命令和语句
    设置idea快速生成doc comment
    关于pom.xml中的dependency中的顺序
    Pyqt5_QMessageBox
  • 原文地址:https://www.cnblogs.com/Hermioner/p/10231601.html
Copyright © 2020-2023  润新知