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

本文详细介绍了如何使用Java Database Connectivity (JDBC) 连接MySQL数据库的方法,包括配置Maven项目、添加JDBC驱动依赖、编写Java代码进行数据库连接及测试,并解析了驱动加载和连接过程。

一. 什么是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

转载于:https://www.cnblogs.com/Hermioner/p/10231601.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值