文章插图
在SQL yog中执行语句查询,发现actor表中成功插入一条数据
文章插图
2.2数据库连接的5种方式2.2.1方式1
//获取Driver实现类对象Driver driver = new com.mysql.jdbc.Driver();String url = "jdbc:mysql://localhost:3306/jdbc_db";Properties info = new Properties();info.setProperty("user", "root");//用户info.setProperty("password", "123456");//密码Connection conn = driver.connect(url,info);System.out.println(conn);
2.2.2方式2方式1会直接使用com.mysql.jdbc.Driver()
,属于静态加载,灵活性差,依赖性强方式2使用反射机制进行动态加载 , 而且信息可以放入配置文件中保存,更利于项目的控制
文章插图
例子
package li.jdbc;//分析java连接mysql的5种方式import com.mysql.jdbc.Driver;import org.junit.Test;import java.sql.Connection;import java.util.Properties;public class jdbcConn {//方式2@Testpublic void connect02() throws Exception {//使用反射加载Driver类,动态加载,更加地灵活,减少依赖性Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");Driver driver = (Driver)aClass.newInstance();String url = "jdbc:mysql://localhost:3306/hsp_db02";//将 用户名和密码 放入到 Properties对象中Properties properties = new Properties();// user 和 password 是规定好的,后面的值根据实际情况写properties.setProperty("user", "root");//用户properties.setProperty("password", "123456");//密码Connection connect = driver.connect(url, properties);System.out.println("方式2="+connect);}}
2.2.3方式3在方式2的基础上使用DriverManager替换Driver文章插图
文章插图
文章插图
文章插图
例子
package li.jdbc;import com.mysql.jdbc.Driver;import org.junit.Test;import java.sql.Connection;import java.sql.DriverManager;public class jdbcConn {//方式3 使用DriverManager替换Driver进行统一管理@Testpublic void connect03() throws Exception {//使用反射加载Driver类Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");Driver driver = (Driver)aClass.newInstance();//创建 url和 user 和 passwordString url = "jdbc:mysql://localhost:3306/hsp_db02";String user = "root";String password = "123456";DriverManager.registerDriver(driver);//注册Driver驱动Connection connection = DriverManager.getConnection(url, user, password);System.out.println("方式3="+connection);}}
2.2.4方式4使用Class.forName自动完成注册驱动,简化代码文章插图
例子
//方式4 使用Class.forName自动完成注册驱动,简化代码// 这种方式获取连接是使用得最多的,推荐使用@Testpublic void connect04() throws Exception {//使用反射加载Driver类//在加载Driver类时 , 完成了注册/*** 在 Driver类的源码中:* 1.静态代码块在类加载时会执行一次* 2.DriverManager.registerDriver(new Driver());* 3.因此 注册Driver的工作已经在底层完成了*static {*try {*DriverManager.registerDriver(new Driver());*} catch (SQLException var1) {*throw new RuntimeException("Can't register driver!");*}*}*/Class.forName("com.mysql.jdbc.Driver");//创建 url和 user 和 passwordString url = "jdbc:mysql://localhost:3306/hsp_db02";String user = "root";String password = "123456";Connection connection = DriverManager.getConnection(url, user, password);System.out.println("方式4="+connection);}
方法4相比于方法3 , 减少了注册驱动的操作,但是连接数据库的步骤不是需要注册驱动吗?为什么可以这样呢?在Driver类的源码中,我们可以看到有这样的一个静态代码块:
文章插图
而静态代码块在类加载时会执行一次,在使用反射加载Driver类时,就执行了
DriverManager.registerDriver(new Driver());
语句 。即在加载Driver类时,完成了注册 。因此,可以在程序中省略注册的步骤 。
注意:
- mysql驱动5.1.6之后连
Class.forName("com.mysql.jdbc.Driver");
也不需要写了
- 从jdk1.5以后使用了jdbc4,不再需要显式调用Class.forName()注册驱动,而是自动调用驱动jar包下的
推荐阅读
- 联发科天玑1000plus和骁龙855哪个玩游戏好
- 美的踢脚线取暖器hdy22th和hdy22L区别?哪个好?
- 栗棕色和咖啡色对比-染栗棕色,咖啡色还是其他色好?
- 一加9r和红米k40哪个好_手机参数配置对比
- 真我GT2和真我GT2Pro有什么区别-参数对比
- iPhone13Pro远峰蓝好看吗_iphone13pro远峰蓝色和石墨色对比
- 魅族18和18pro区别_魅族18和18pro参数配置
- 天玑800u和天玑820对比_天玑800u和天玑820哪个好
- 华硕灵耀Pro16和联想小新Pro16哪个好_怎么选择
- 华为P50Pro和iPhone12Promax拍照测试_拍照能力对比