介紹
- jdbc:java database connectivity,是java規範中描述客戶端如何訪問數據庫的接口
- 包括:
- java api:位於java.sql和javax.sql包中
- database api:規範各個數據庫的接入標準
預備
- 下載mysql workbench的mac版本
- 數據庫url:
- 示例1:Jdbc:mysql://localhost:3306/test?key1=param1&key2=param2
- 示例2:jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk
Jdbc:連接協議
mysql:連接子協議
Localhost:3306:連接地址
test:數據庫名稱
&:存在編碼問題,用該編碼代替”&“
?號後面的都是連接時的參數,加上時,會覆蓋默認的連接參數
- url參數文檔:
- https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html
- 常用的url參數有:
User:用戶名
password:用戶密碼
connectTimeout:socket連接超時時間
maxReconnects:重新連接時間
useSSL:是否使用useSSL,默認爲false
characterEncoding:編碼格式,一般爲utf-8
serverTimezone:設置MySQL的時區
- mysql驅動
- 注意:8.x版本的mysql驅動有非常大的變化,需要注意
連接案例
package connection;
import org.junit.Test;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class First {
private static String url = "jdbc:mysql://localhost:3306/test";
private static String user = "root";
private static String password = "123456";
@Test
public void testGetConnection01() throws SQLException {
Driver driver = new com.mysql.jdbc.Driver();
Properties info = new Properties();
info.setProperty("user", user);
info.setProperty("password", password);
Connection connect = driver.connect(url, info);
System.out.println("new得到連接:" + connect);
}
@Test
public void testGetConnection02() throws Exception {
Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver)aClass.newInstance();
Properties info = new Properties();
info.setProperty("user", user);
info.setProperty("password", password);
Connection connect = driver.connect(url, info);
System.out.println("反射得到連接:" + connect);
}
@Test
public void testGetConnection03() throws Exception {
Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver)aClass.newInstance();
DriverManager.registerDriver(driver);
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println("DriverManager得到連接:" + connection);
}
@Test
public void testGetConnection04() throws Exception {
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println("簡化版DriverManager得到連接:" + connection);
}
@Test
public void testGetConnection05() throws Exception {
InputStream resourceAsStream = First.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
Class<?> driverClass = Class.forName(properties.getProperty("driverClass"));
Connection connection = DriverManager.getConnection(properties.getProperty("url"),
properties.getProperty("user"),
properties.getProperty("password"));
System.out.println("配置文件版的DriverManager得到連接:" + connection);
}
}
- 輸出:
參考
- 尚硅谷jdbc教程
- 延伸:
- 以前的SSH框架:structs、spring、Hibernate
- 現在的SSM框架:spring、springmvc、mabatis