当前位置: 首页 > news >正文

JDBC(五)

抽取JDBC工具类
目的:简化书写
分析:
1.注册驱动的抽取
2.抽取一个方法获取连接对象
3.抽取方法释放资源

package Utils;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

/**
 * JDBC工具类
 */
public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    private static String driver;



    /**
     * 文件的读取,只需要一次即可拿到这些值
     */

    static {
    //读取资源文件,获取值
        //1.创建Properties集合类
        Properties pro = new Properties();
        //获取src路径下的文件方式
        ClassLoader classLoader = JDBCUtils.class.getClassLoader();
        URL res = classLoader.getResource("jdbc.properties");
        String path = res.getPath();

        //2.加载文件
        try {
            pro.load(new FileReader(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
        //3.获取数据,赋值
        url = pro.getProperty(url);
        user = pro.getProperty(user);
        password = pro.getProperty(password);
        driver = pro.getProperty(driver);
        //4.注册驱动
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }




    /**
     * 获取连接
     * @return 连接对象
     */
    public static Connection getConnection(){
        return null;
    }

    public static void close(Statement stmt,Connection conn){
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    public static void close(ResultSet rs,Statement stmt, Connection conn){
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

url=jdbc:mysql:///db3
user=root
password=root
driver=com.mysql.jdbc.Driver

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • POST 和 GET的 区别
  • tsung的工具使用
  • 测开学习第一天-HTML1
  • 转载了一个斗图深神器的爬虫
  • Airtest
  • 安装hyper-V虚拟机
  • /etc/fstab 只读无法修改的解决办法
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • 使用Ubuntu安装了个虚拟机
  • Notepad++多行合并成一行
  • 我是如何从年到的转变
  • 用户登入
  • 请使用继承Thread类的方式定义一个线程类,在run()方法中循环10次,每1秒循环1次,每次循环按“yyyy-MM-dd HH:mm:ss”的格式打印当前系统时间。
  • 请使用实现Runnable接口的方式定义一个类,在run()方法中使用循环变量i遍历1--1000所有的数字。
  • 请使用继承Thread类的方式定义一个线程类,在run()方法中使用循环变量i遍历1--1000所有的数字。
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 230. Kth Smallest Element in a BST
  • echarts的各种常用效果展示
  • Gradle 5.0 正式版发布
  • Java应用性能调优
  • Meteor的表单提交:Form
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Mysql数据库的条件查询语句
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 从伪并行的 Python 多线程说起
  • 给github项目添加CI badge
  • 工作中总结前端开发流程--vue项目
  • 微信小程序开发问题汇总
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 阿里云ACE认证之理解CDN技术
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​secrets --- 生成管理密码的安全随机数​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (10)ATF MMU转换表
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (过滤器)Filter和(监听器)listener
  • (黑马C++)L06 重载与继承
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (面试必看!)锁策略
  • (万字长文)Spring的核心知识尽揽其中
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Mysql的优化设置
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .equals()到底是什么意思?
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Micro Framework初体验
  • .net开发时的诡异问题,button的onclick事件无效
  • .net连接oracle数据库
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell