Java的数据库连接工具类的编写
步骤:
1. 定义变量 2. 通过反射进行读取配置文件 3. 实例化Properties读取配置文件中的各个属性 4. 关闭字节输入流 5. 类加载 6. 通过驱动管理的获取连接方法获取到连接对象 7. 释放资源
代码:
package cn.javabs.util; import java.io.IOException; 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; /** * @author: Mryang * Jdbc工具类: 工具类的含义是作为一个通用的辅助资料使用,简化开发流程,提高效率。 * 工具类一般使用“static”进行修饰,静态化 * static的优点 * |---- 1. 可以使用 【类名.函数名称】进行调用,不必再次创建对象 * |---- 2. 优于构造函数先执行 * |---- 4. 静态成员被所有对象所共享(静态数据达到成为共享数据) * |---- 3. 随着类的加载而加载 (也就是说类运行了,静态成员也就跟随运行了) * static的缺点 * |---- 1. 访问出现局限性,只能访问静态 * |---- 2. 静态成员的生命周期过长 * |---- 3. 不可以与this\super关键字同用 * |----因为this代表是当前类对象,而静态存在时,有可能没有对象 * |----因为super代表是父类对象,而静态存在时,有可能没有对象, * |----而且静态优先于对象存在 * |----4.静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态; * * **/ public class JdbcUtil { // 定义 数据库驱动 private static String driverClass; // 定义 数据库的连接 private static String url; // 定义 数据库用户 private static String user; // 定义 数据库用户的密码 private static String password; // 静态代码块 static{ try { // JdbcUtil.class是获得当前对象所属的class对象 // getClassLoader()是取得该Class对象的类装载器 // getResourceAsStream(“dbcfg.properties”) 调用类加载器的方法加载资源,返回是字节输入流 InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("dbcfg.properties"); // 实例化Properties对象,目的是为了创建props Properties props = new Properties(); // 在props对象中可以进行加载属性列表到Properties类对象 props.load(in);//也就是说: 通过props对象进行加载输入流对象(in) /* * 通过getProperty方法用指定的键在此属性列表中搜索属性 */ //也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-driverClass(被指定) driverClass = props.getProperty("driverClass"); //也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-url(被指定) url = props.getProperty("url"); //也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-user(被指定) user = props.getProperty("user"); //也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-password(被指定) password = props.getProperty("password"); //已经获取过配置文件中的属性键值对,将字节输入流进行释放关闭 in.close(); } catch (IOException e) { // 转换异常抛出 throw new ExceptionInInitializerError("获取数据库配置文件信息失败"); } try { // 类加载-->驱动 Class.forName(driverClass); } catch (ClassNotFoundException e) { // 转换异常抛出 throw new ExceptionInInitializerError("加载驱动失败"); } } /** * 获取连接 * @return: conn */ public static Connection getConnection(){ try { //连接类型 连接对象 = 驱动管理中的获取连接(连接,用户名,密码) Connection conn = DriverManager.getConnection(url,user,password); // 将连接进行返回 return conn; } catch (Exception e) { // 转换异常抛出 throw new RuntimeException("链接数据库的url或用户名密码错误,请检查您的配置文件"); } } /** * 释放资源 * 传递三个参数: 结果集对象 ,处理Sql语句对象 , 连接对象 * 无返回值状态 */ public static void release(ResultSet rs,Statement stmt,Connection conn){ //如果 结果集中不为空 if(rs!=null){ try { rs.close();//将结果集中关闭 } catch (SQLException e) { e.printStackTrace(); } rs = null; } //如果处理Sql语句对象不为空 if(stmt!=null){ try { stmt.close();//将处理Sql语句对象关闭 } catch (SQLException e) { e.printStackTrace(); } stmt = null; } //如果 连接不为空 if(conn!=null){ try { conn.close();//将连接关闭 } catch (SQLException e) { e.printStackTrace(); } conn = null; } } }
配置文件编写:
#driver config for mysql driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test user=root password=sorry
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。