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);
发布了18 篇原创文章 · 获赞 18 · 访问量 1187

猜你喜欢

转载自blog.csdn.net/qq_42542609/article/details/102501086