JDBC学习_2JDBCUtils

在上一篇笔记里,说到每一次使用数据库都要注册驱动,获取链接,释放资源,这样很麻烦,我们应该将注意力集中在sql代码上,而不是这些重复的代码,所以我们写一个JDBCUtils工具类,来抽取驱动注册,获取链接方法,释放资源方法。
达到这样的效果:注册驱动只需要这样一句话

Connection conn=JDBCUtils.getConnection();

下面来完成JDBCUtils:

public static Connection getConnection(){
	return DriverManager.getConnection(url,user,password)
	//1.获取连接,返回的肯定是一个连接对象,
	//2.工具类的方法一般都是静态的,方便调用
	//这样写显然现在是不对的,每次用这个方法都要在里面该url,user,pwd
}

所以我们写一个配置文件jdbc.properties,将来只用读取配置文件就可以了,这个配置文件我们一般放在src下
jdbc.properties

url=jdbc:mysql:///数据库名;
user=用户名;
password=密码;
driver=com.mysql.jdbc.Driver;

再绕就绕晕了,下面不多bb,直接把JDBCUtils写出来

public class JDBCUtils{
	//读取文件配置,只需读取一次,就可以拿到这些值,使用静态代码块
	//静态代码块会随着类的加载而加载,只会加载一次
	//所以我们还可以在这里注册驱动
	static{
		properties pro = new Properties();
		pro.load(new FileReader("src/jdbc.properties"));//后面会补充一个更好的读取配置文件的方式
		url=pro.getProperty("url");//键名要和配置文件中的键名一致
		user=pro.getProperty("user");
		password=pro.getProperty("password");
		driver=pro.getPreperty("driver");
		Class.forName(driver);//注册驱动
	}
	//获取连接
	public static Connection getConnection(){
		return DriverManager.getConnection(url,user,password);
	}
	//释放资源
	public static void close(Statement stmt,Connection conn){
		if(stmt!=null){
			stmt.close();//这里会有一个异常try/catch一下就好;
		}
		if(conn!=null){
			conn.close();
		}
	}
	//执行DML时需要stmt,conn
	//执行DQL时需要rs,stmt,conn,所以要写两种close
	public static void close(Statement stmt,Connection conn){
		if(stmt!=null){
			stmt.close();//这里会有一个异常try/catch一下就好;
		}
		if(conn!=null){
			conn.close();
		}
	}
}

然后JDBCUtils就可以用了,但是要补充一点,在static里,难道我们每次使用JDBCUtils都要打开这个文件,然后写一下加载路径吗?显然我们不想这样,所以我们通过ClassLoader类加载器加载

ClassLoader classLoader=JDBCUtils.Class.getClassLoader();
URL res=classLoader.getResource("jdbc.properties");
String path=res.getPath();
//z之前我们写的pro.load(new FileReader("src/jdbc.properties"));
//就可以改为
pro.load(new FileReader(path);

这样工具类就写完了,可以很好的使用了

今后我们获取连接

Connection conn=JDBCUtils.getConnection();

释放资源

JDBCUtils.close(rs,stmt,conn);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值