本节内容,从最简单的jdbc连接方式开始,讲述如何与数据库建立连接;
这里的测试环境用Mysql5.1.73,开发前需要做一些准备,提前下载好mysql的jdbc驱动包,并导入lib库中(不会的童鞋请自行百度)
1.最简单的jdbc连接方式
/**
* 连接数据库必备的条件:
* 1.准备好驱动包 和对应的url写法,
* 如mysql的驱动名称com.mysql.jdbc.Driver()对应的URL写法为:
* jdbc:mysql://localhost:3306/admin
* 2.知道驱动包的Driver名称
* 3.数据库的用户名user
* 4.密码password
*/
public class Demo1 {
// 连接数据库的URL [jdbc协议:数据库子协议://主机:端口/数据库名称] -----标点符号都不能错,否则打死都连不上!!!
private String url = "jdbc:mysql://localhost:3306/admin";
private String user = "root";
private String password = "123";
/**
* 数据库连接测试
*
* @throws SQLException
*/
@Test
public void test1() throws SQLException {
// 1.创建驱动程序类对象
// Driver driver = new org.gjt.mm.mysql.Driver(); 旧版本
Driver driver = new com.mysql.jdbc.Driver(); // mysql通用连接,推荐使用
Properties prop = new Properties();
prop.setProperty("user", user);
prop.setProperty("password", password);
// 2.连接数据库
Connection conn = driver.connect(url, prop);
// 3.输出连接信息
System.out.println(conn);
}
2. 使用驱动管理器类DriverManager连接数据库(无优化)
DriverManager是什么鬼呢?它用来管理向数据库中注册连接的相关事宜,在test2()中我们采用了注册的过程
@Test
public void test2() throws Exception {
Driver driver = new com.mysql.jdbc.Driver();
// Driver driver2 = new com.oracle.jdbc.Driver();
// 1.注册驱动程序(可以注册多个驱动程序)
// DriverManager.registerDriver(driver);
// DriverManager.registerDriver(driver2);
// 2.连接到具体的数据库
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
通过阅读com.mysql.jdbc.Driver类,我们发现,在Driver初次加载时,静态代码块中已经通过静态代码块中调用DriverManager进行过注册了。。。不信你看图
所以这个test2()算的上是脑残之举!!搬砖拍自己一下
3.使用驱动管理器类DriverManager连接数据库(优化方法)
在test2()方法中, 其实注册驱动程序(DriverManager.registerDriver(driver);)的过程
在new com.mysql.jdbc.Driver();这一步已经做过了,所以没必要再做
(通过阅读com.mysql.jdbc.Driver源码时发现在静态加载过程中有这个注册过程)
但是又出现另一个改造需求:能不能每次都不new这个类呢?怪累的,答案自然是:必须能!
test3()通过得到字节码对象的方式加载静态代码块(代码块里包含new对象和注册的过程),从而注册驱动程序
@Test
public void test3() throws Exception {
// Driver driver = new com.mysql.jdbc.Driver();
/*通过得到字节码对象的方式加载静态代码块(代码块里包含new对象和注册的过程),
*从而注册驱动程序
*/
Class.forName("com.mysql.jdbc.Driver");
// Driver driver2 = new com.oracle.jdbc.Driver();
// 1.注册驱动程序(可以注册多个驱动程序)
// DriverManager.registerDriver(driver);
// DriverManager.registerDriver(driver2);
// 2.连接到具体的数据库
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
}
到这里,一个精简的JDBC连接过程就真正实现了,但是这个只是ABC的水平,实际运用到项目中还是存在诸多问题的 稍后再为大家更新更牛逼的,敬请期待