1.获取数据库连接的要素
要素一:加载并注册驱动
要素二:URL
要素三:用户名和密码
要素一:加载并注册驱动
(1)导入mysql-connector-java的jar包
(2)加载驱动
调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名,com.mysql.jdbc.Driver
是驱动类名
(3)注册驱动
DriverManager类是管理驱动程序的类,通常Driver类中的静态代码块会调用这个注册方法,因此不需要显式调用
Driver类中的静态代码块
注:新版的mysql驱动类名为com.mysql.cj.jdbc.Driver
要素二:URL
用来标识一个注册过的驱动程序和定位数据库信息,DriverManager类通过这个URL找到正确的驱动程序
常见的URL jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
要素三:用户名和密码
用于连接数据库
调用 DriverManager 类的 getConnection() 方法获取到数据库的连接
2.连接到数据库
方式一:使用Driver接口实现类中的connect()方法
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库
厂商提供不同的实现。
显式出现了第三方数据库的API
import com.mysql.cj.jdbc.Driver;
@Test
public void test1() {
try {
//1.java.sql.Driver接口实现类的对象
Driver driver = null;
driver = new com.mysql.cj.jdbc.Driver();
//2.url
String url = "jdbc:mysql://localhost:3306/test";
//3.用户名和密码
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "123456");
//4.获取连接
Connection connect = driver.connect(url, info);
System.out.println(connect);
} catch (SQLException e) {
e.printStackTrace();
}
}
方式二:通过反射实例化driver
不在代码中体现第三方数据库的API。
@Test
public void test2(){
try {
//反射方式实例化driver
Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver)clazz.newInstance();
String url = "jdbc:mysql://localhost:3306/test";
Properties info = new Properties();
info.setProperty("user","root");
info.setProperty("password","123456");
Connection connect = driver.connect(url, info);
System.out.println(connect);
}catch (Exception e){
e.printStackTrace();
}
}
方式三:使用DriverManager注册驱动获取连接
@Test
public void test3(){
try {
//1.四个要素
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
String driverName = "com.mysql.cj.jdbc.Driver";
//2.实例化Driver
Class clazz = Class.forName(driverName);
Driver driver = (Driver)clazz.newInstance();
//3.注册驱动
DriverManager.registerDriver(driver);
//4.获取连接
Connection connect = DriverManager.getConnection(url, user, password);
System.out.println(connect);
}catch (Exception e){
e.printStackTrace();
}
}
方式四:不用显示注册驱动
@Test
public void test4(){
try {
//1.四个要素
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
String driverName = "com.mysql.cj.jdbc.Driver";
//2.加载和注册驱动(com.mysql.cj.jdbc.Driver类中的静态代码块有实例化注册了)
Class.forName(driverName);
//3.获取连接
Connection connect = DriverManager.getConnection(url, user, password);
System.out.println(connect);
}catch (Exception e){
e.printStackTrace();
}
}
方式五:使用配置文件保存要素
配置文件jdbc.properties写在src目录下
user = root
password = 123456
url = jdbc:mysql://localhost:3306/test
driverClass = com.mysql.cj.jdbc.Driver
使用配置文件的方式,数据和代码分离,修改配置文件不需要重新编译
@Test
public void test5() throws Exception{
//1.加载配置文件
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
//2.读取配置信息
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
//3.加载驱动
Class.forName(driverClass);
//4.获取连接
Connection connect = DriverManager.getConnection(url, user, password);
System.out.println(connect);
}
标签:jdbc,String,url,数据库,Driver,JDBC,connect,mysql,连接
From: https://www.cnblogs.com/zhishu/p/16874728.html