网站建设知识
今天自己写的MySQL自定义JDBCUtils代码编写过程详解.
2025-07-22 11:14  点击:2

今天自己写的MySQL自定义JDBCUtils代码编写过程详解.。

数据库连接是操作数据库的基础. 工具类一旦编写完成,便能省去大量重复操作,提高工作学习效率,更好的实现代码的复用性.

可能以前有前辈总结过,如有重复,大家自由选择参考,大家都是同一个目的,分享技术,共同进步.

下面废话不多说,直接上代码

package JDBCUtils;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class MyJDBCUtils {//-----------------------------------获取数据库连接对象部分-----------------------------------------//第三步:创建一个Properties集合对象,通过键值对的形式存储jdbcmsg.properties内的数据,将其放在成员变量的位置,并且设置为静态,随类加载一次即可.节省资源.private static Properties pro = new Properties();//第五步,将之前的加载Driver的代码放入静态代码块中,这样只会跟随类加载一次.节省资源.static{try {//第一步: 在文件的根目录下创建一个jdbcmsg.properties文件,通过键值对的形势存储Driver,url,username,password//第二步: 定义一个输入流对象 ,利用反射技术,通过本类的字节码文件,获得一个类的加载器,通过这个加载器调用配置文件的数据.InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbcmsg.properties");//第四步:Properties集合对象,添加数据.pro.load(in);//第五步: 导入SQL包,然后通过反射将com.mysql.jdbc.Driver加载入内存,Driver类中有一个静态代码块,用来注册驱动,此时需要处理异常Class.forName(pro.getProperty("Driver"));} catch (Exception e) {//打印出来异常结果e.printStackTrace();//如过加载Driver失败,那么后面的代码就没必要执行,直接抛出运行时异常,停止程序即可.throw new RuntimeException();}}//第六步:书写一个获取数据库连接对象的静态方法 getCon(),返回值是connection,这样可以直接类名调用,无需创建对象.public static Connection getCon(){//第八步:在try/catch外 定义一个Connection变量,赋值为null,这样做的目的是防止发生异常,return的是一个未定义的值而报错.Connection con = null;//第七步:通过执行者对象获取数据库连接,但是此时需要抛出异常.try {con = DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("username"),pro.getProperty("password"));} catch (SQLException e) {//如果有异常,则打印异常信息e.printStackTrace();//如果异常,那么数据库的连接对象则获取失败,抛一个运行时异常结束即可.throw new RuntimeException();}return con;}//-------------------------------下面是释放资源部分(所偶的异常都通过try/catch处理)------------------------------------//第九步:书写一个释放资源的静态方法,这个方法不需要返回值,但是在调用时需要传参数.public static void close(ResultSet rs, Statement sta, Connection con){try {//第十步:在关流之前,需要先判空,如果为空,则无需关流(后面同理,不再解释)if (rs != null) {//第十一步: 关流 ,关流时需要try/catch,打印异常结果,但是不要抛出运行时异常.(后面同理,不再解释) rs.close();//第十二步: 灌流后再将其值定义为null值,理论上可以让垃圾回收器尽快来回收(这步不写亦可.后面同理,不再解释)rs = null;}} catch (SQLException e) {//打印异常e.printStackTrace();} finally {//第十三步:关流的顺序是从后向前,依次关流,层层嵌套,写在上一步的finally中,使代码必须执行,最后关数据库连接流.try {if (sta != null) {sta.close();sta = null;}} catch (SQLException e) {e.printStackTrace();} finally {//第十四步: 原理同上try {if (con != null) {con.close();con = null;}} catch (SQLException e) {e.printStackTrace();}}}}}//第十五步:  创建一个测试类,此处不再具体操作.