关于JDBC驱动
获取JDBC驱动的Jar包
需要到各个数据库厂商的官网下载
markdown
在百度中搜索你需要连接的数据库厂商名 + driver 如:jdbc driver, 进入指定的官网中下载对应版本的驱动
创建数据库连接代码示例
Class.forName("com.mysql.cj.jdbc.Driver");//1.加载初始化JDBC驱动类
String url = "jdbc:mysql://localhost:3306/imooc";//数据库连接字符串
String username = "root";//数据库用户名
String password = "root";//数据库密码
Connection conn = DriverManager.getConnection(url, username, password);//2.创建数据库连接
细节说明:
Class.forName的作用:
- Class.forName用于指定加载指定的JDBC驱动类
- Class.forName本质是通知JDBC注册这个驱动类
- 驱动由数据库厂商自行开发,连接字符串也不同
数据库连接字符串
常见的数据库厂商规定的连接字符串
数据库 | JDBC驱动类 | 连接字符串 |
---|---|---|
MySQL 5 | com.mysql.jdbc.Driver | jdbc:mysql://主机ip:端口/数据库名 |
MySQL 8 | com.mysql.cj.jdbc.Driver | jdbc:mysql://主机ip:端口/数据库名 |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@主机ip:端口:数据库名 |
SQLServer | com.mircosoft.sqlserver.jdbc.SQLServerDriver | jdbc:mircosoft:sqlserver:主机ip:端口;database=数据库名 |
MySQL连接字符串
- 格式: jdbc:mysql://[主机ip]:[端口]/数据库名?参数列表
- 主机ip与端口是可选设置,默认值为127.0.0.1与3306
- 参数列表采用url编码,格式:参数1=值1&参数值2=值2&…
MySQL连接字符串的参数
参数名 | 建议参数值 | 说明 |
---|---|---|
useSSL | true(生产)/false(开发) | 是否禁用,SSL代表安全套接层(作用是在网络传输过程中使用非对称加密的方式对数据加密传输) |
useUnicode | true | 启用unicode编码传输数据 |
characterEncoding | UTF-8 | 使用UTF-8编码传输数据 |
serverTimezone | Asia/Shanghai | 使用东8时区时间,UTF+8 |
allowPublicKeyRetrieval | true | 允许从客户端获取公钥加密传输 |
DriverManager对象
- DriverManager用于注册/管理JDBC驱动程序
- DriverManager.getConnection(连接字符串, 用户名, 密码)
- 返回Connection对象,对应数据库的物理网络连接
Connection对象
- Connection对象用于JDBC与数据库的网络通信对象
- java.sql.Connection是一个接口,具体由驱动厂商实现
- 所有数据库的操作都建立在Connection基础上
完整代码:
package com.imooc.jdbc.sample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @author CubeMonkey
* @create 2020-09-29 19:57
*/
public class ConnectionSample {
public static void main(String[] args) {
Connection conn = null;
try {
String url = "jdbc:mysql://localhost:3306/imooc?" +
"useSSL=false&useUnicode=true&characterEncoding=UTF-8&" +
"serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";//数据库连接字符串
String username = "root";//数据库用户名
String password = "root";//数据库密码
Class.forName("com.mysql.cj.jdbc.Driver");//加载初始化JDBC驱动类
conn = DriverManager.getConnection(url, username, password);//创建数据库连接
System.out.println(conn);
} catch (ClassNotFoundException e) {//通常是因为没有在当前工程中引入jdbc驱动包
e.printStackTrace();
} catch (SQLException e) {//与数据库有关的异常
e.printStackTrace();
} finally {
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}