1. 目的

  每次使用JDBC的时候都要书写冗长的代码段,不符合复用的理念,于是要单独写一个类,将通用的JDBC操作写到一个类中,便于重复使用和精简代码。

2. 步骤

  (1)注册驱动并获取连接

    为了最大精简获取连接的简化性和通用性,这里需要使用到配置文件 jdbc.properties 解决。

    1) 创建一个文件,放到项目中,要更换别的连接时,只需修改配置文件即可,无需修改类文件和重新编译。

    driver=数据库驱动路径
    url=url连接字符串
    user=用户名
    password=密码

    2) 然后就需要将配置文件中键值对中的值取出,并注册了驱动。因为驱动和取出配置文件只需要一次就可以,所以就写入到静态代码块中,在程序运行的开始就处理好了,无需以后再冗余执行。

// 定义静态变量,使用静态代码获取配置文件的值
private static String url;
private static String user;
private static String password;
private static String driver;
// 使用静态代码注册驱动并给静态变量赋值
static{
try {
// 创建Properties集合类
Properties pro = new Properties();
// 获取src路径下文件,使用ClassLoader类加载器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
// URL定位了文件的绝对路径
URL res = classLoader.getResource("jdbc.properties");
// 获取字符串路径
String path = res.getPath();
// 读取文件
pro.load(new FileReader(path));
// 给静态变量赋值
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
// 注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

    3) 获取连接

public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}

  (2)释放资源

    因为有的sql语句需要用结果集对象,所以使用两个重载方法释放资源。

/**
* @Author ZhaoPeiXuan
* @Description 释放资源
* @Date 22:08 2019/9/16
* @Param [stmt 执行sql的对象, conn 数据库连接对象]
* @return void
**/
public static void close(Statement stmt, Connection conn){
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} /**
* @Author ZhaoPeiXuan
* @Description 释放资源Pro版
* @Date 22:13 2019/9/16
* @Param [rs 结果集对象, stmt 执行sql的对象, conn 数据库连接对象]
* @return void
**/
public static void close(ResultSet rs, Statement stmt, Connection conn){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

3. 简化后的代码

  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  try {
    conn = JDBCUtils.getConnection();
    String sql = "SQL语句";
    stmt = conn.createStatement();
    rs = stmt.executeQuery(sql);
  } catch (SQLException e) {
    e.printStackTrace();
  } finally {
    JDBCUtils.close(rs, stmt, conn);
  }

最新文章

  1. CSS3 滤镜
  2. javase-->基础知识(三)
  3. Parse xml/json[xpath/jpath]
  4. Ios学习之容器的理解
  5. Web自动化测试 Selenium 1/3
  6. Helpful Tool
  7. SqlServer中的Null值空值问题
  8. SecureCRT 的安装和注册
  9. Linux rsync 同步
  10. liux vim命令
  11. ListView item 中TextView 如何获取长按事件
  12. 开发者应该避免使用的6个Java功能(转)
  13. HDU 2639 Bone Collector II(01背包变型)
  14. android:http下载文件并保存到本地或SD卡
  15. ChartControl一个小Demo
  16. VC++共享数据段实现进程之间共享数据
  17. VC中添加web控件的方法
  18. k8s 集群部署问题整理
  19. Class 泛型
  20. CentOS7创建本地yum源

热门文章

  1. Python Web 程序使用 uWSGI 部署
  2. Canvas 绘制一个像素风电子时钟
  3. js入门之字符串常用的方法
  4. ChibiOS/RT移植到STM32F407
  5. nginx的应用【静态代理、动静分离】
  6. 使用C#应用程序与Arduino开发板进行通信
  7. archlinux 蓝牙耳机没有声音
  8. 使用docker简单启动springboot项目
  9. Selenium常用API的使用java语言之2-环境安装之IntelliJ IDEA
  10. django设置时区与语言