连接MySQL数据库,需要在程序中加载JDBC驱动程序,然后使用DriverManager类的getConnection()方法来连接MySQL数据库。连接步骤如下图所示:
MySQL数据库连接步骤
(1) 加载JDBC驱动程序
所有的JDBC驱动程序都实现了java.sql.driver接口,加载JDBC驱动就是加载JDBC实现该接口的类,一般使用Class类的forName()方法加载该类,forName()方法要求传入包含加载类路径的文本串,也就是JDBC实现java.sql.driver接口的类所在jar包的路径。
基于MySQL8.0数据库的JDBC实现java.sql.driver接口的类路径为:
com.mysql.cj.jdbc.Driver
加载类文件的语句为:
Class.forName(“com.mysql.cj.jdbc.Driver”);
使用winrar软件直接打开mysql-connector-java-8.0.18.jar文件,即可发现JDBC实现java.sql.driver接口的类所在jar包的路径。
(2)连接数据库
加载JDBC驱动程序成功后,下一步就可以连接数据库。连接数据库要用到DriverManager类,DriverManager类在java.sql包内。它负责JDBC驱动程序的管理,作用于程序和JDBC驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。
它提供的主要方法就是得到一个数据库的连接,getConnection()方法用于连接数据库,并返回一个Connection对象。该方法说明如下:
static Connection getConnection(String url)
该方法用于建立和数据库的连接,数据库的连接路径由参数url给出。它会从已加载的JDBC驱动程序集合中选择适当的驱动程序。
参数url为数据库的连接路径,连接MySQL数据库的路径格式为:
jdbc:mysql://IP地址:端口号/数据库名称?key1=value1&……& keyn=valuen
其中“jdbc”为连接协议,“mysql”为连接的子协议,该子协议指定是连接mysql数据库,“IP地址:端口号”指定数据库所在主机的IP地址和数据库的监听端口,在实际连接中,使用主机的IP地址和数据库的监听端口号来代替。“数据库名称”指定要连接的数据库名称。在“数据库名称”后面的key和value键值对可以有多个,也可以没有,这些键值对为驱动程序提供附加的连接信息。
static Connection getConnection(String url, String user, String password)
该方法用于建立和数据库的连接,数据库的连接路径由参数url给出,数据库的登录用户由参数user给出,数据库用户的登录密码由参数password给出。
如果待连接的数据库需要指定用户名和密码才能访问时,就需要使用该方法来连接数据库。
(3)操作数据库
数据库连接成功后,就可以进行数据库的查询、更新和写入操作。对数据库的所有操作都在Connection接口内,关于Connection接口的内容在后面的课程会陆续介绍。
(4)关闭数据库的连接
完成数据库的操作后,需要关闭数据库的连接,以释放数据库连接资源。Connection类的close()方法用于关闭与数据库的连接。
本课案例中涉及的数据库可以在课程资源下载,下载的数据库是SQL文件,可以使用MySQL命令导入下载的数据库。
案例1:建立ConnectionMySQLTest类,连接数据库。
在PCoreUnit11项目新建demo包,在demo包下新建ConnectionMySQLTest类。代码如下:
package demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @ClassName: ConnectionMySQLTest
* @Description: 数据库编程(连接MyQL数据库)案例1
* @author 编程训练营
* @date
*
*/
public class ConnectionMySQLTest {
// 定义JDBC加载路径
static String jdbc = "com.mysql.cj.jdbc.Driver";
// 定义MySQL数据库的连接地址
static String mysqlurl = "jdbc:mysql://localhost:3306/shop?serverTimezone=UTC";
// 定义MySQL数据库的用户名
static String username = "root";
// 定义MySQL数据库的用户名登录密码
static String password = "~123456q";
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
Connection conn = null;
try {
// 加载JDBC驱动
Class.forName(jdbc);
// 连接数据库
conn = DriverManager.getConnection(mysqlurl, username, password);
if( null != conn )
{
System.out.println(conn);
conn.close();
}
else
{
System.out.println("数据库连接失败");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}代码中mysqlurl数据库路径说明如下:
(1) localhost 是指本地IP地址;
(2) MySQL数据库的默认端口号是3306;
(3) shop是连接数据库的名称,shop数据库可以在课程资源区下载,下载后可导入到MySQL数据库;
(4) serverTimezone键值对是用来设置时区,可以将serverTimezone设置为UTC,UTC表示的是全球标准时间。如果程序运行是在中国,一般将该值设置为GMT%2B8,即北京时间东八区。
代码中的username和password分别是登录数据库的用户名和登录密码。
程序执行结果如下图所示:

程序输出以上信息,表示数据库连接成功。