Java连接数据库(JDBC)获取MySQL数据连接的方式

Java连接数据库(JDBC)

先来个最简单的一步连接:

String url = "jdbc:mysql://localhost:3306/db_name?user=root&password=123456&serverTimeZone=UTC";
// 连接
Connection connection = DriverManager.getConnection(url);

JDBC(Java Database Connectivity)

各大数据库厂商均实现了Java中java.sqljavax.sql 包中的接口,我们要使用Java语言连接数据库进行操作。首先就要下载对应厂商提供的jar包。

下面以MySQL数据库为例:

导入jar包(手动导入)

在maven repository下载对应jar包

mysql-connector

https://mvnrepository.com/artifact/com.mysql/mysql-connector-j/8.0.31

Java连接数据库(JDBC)获取MySQL数据连接的方式_第1张图片

将下载的jar包导入项目。

连接数据库

第一步:创建Driver对象

为连接MySQL数据库我们需要加载其驱动(即创建Driver对象)

Driver是java.sql中的一个接口,我们下载的jar包中已将其实现为具体的类。

Driver driver = new com.mysql.cj.jdbc.Driver();
// 注:第一个Driver是java.sql下的接口,new后面的是全路径的Driver类。
// 旧版本的包中使用的是com.mysql.jdbc.Driver();而在新版本中更推荐使用以上代码中的。

第二步:调用driver.connect(String url, Properties info)方法

创建完成driver对象后,调用其connect(url, info)方法即可成功连接到数据库,该方法返回一个connection对象,我们可以通过此对象完成对MySQL的任何操作。

connect(String url, Properties info)

该方法有两个参数,第一个url为数据库的网络协议,需要提前定义好。

eg:

String url = "jdbc:mysql://localhost:3306/db_name"

其中localhost:3306为IP和端口,若不写则默认为本地主机。db_name为要连接的数据库名(连接指定的一个数据库)。

第二个参数info是携带的参数,以properties对象的形式传递。

其中必备的参数为用户名和密码。(8.0后有的版本要求传时区)

eg:

Properties info = new Properties();
info.setProperty("user","root");
info.setProperty("password","123456");
// 可能会需要的时区:
// info.setProperty("serverTimeZone", "UTC");

调用connect:

Connection connection = driver.connect(url,info);

优化:

将配置信息(url,user,password,serverTimeZone)存入配置文件,在需要改动时即修改配置文件即可。

优化连接代码1

在第一步中,我们通过全路径创建了Driver对象,若我们想要连接别的数据库(如Oracle),则需要修改这段全路径的代码,这样具有较高耦合度的代码能够优化的更加通用。

优化如下:

使用反射技术创建driver对象,即可将com.mysql.cj.jdbc.Driver 写入配置文件,在需要修改时即修改配置文件即可。降低了代码的耦合度。

Driver driver = null;
Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
// 上一行代码中的参数应为配置文件中读取出的变量。
driver = (Driver) aClass.getConstructor().newInstance();

优化连接代码2

mysql-connector中,为我们提供了一个DriverManager 类,我们推荐使用此类来获取连接。(它的==getConnection()==方法)。

在此类的源码中可以发现其已经自动帮我们创建了driver对象。故可以大大简化我们的代码量。

eg:

String url = "jdbc:mysql://localhost:3306/db_name?user=root&password=123456&serverTimeZone=UTC";
// 使用getConnection方法获取连接的connection对象。
Connection connection = DriverManager.getConnection(url);

// 注:用户名密码等参数放在url里了。当然,这些均可放在配置文件中。

getConnection的重载

Connection getConnection(String url,java.util.Properties info)
Connection getConnection(String url,
        String user, String password)
Connection getConnection(String url)

你可能感兴趣的:(MySQL,Java,数据库,java,mysql)