package util;

import java.io.File;
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; /**
* jdbc通用的方法
* @author mzy
*
*/
public class JdbcUtil {
//url
private static String url = null;
//user
private static String user = null;
//password
private static String password = null;
//驱动程序类
private static String driverClass = null;
/**
* 只注册一次,静态代码块
*/
static{ //注册驱动程序
try { /**
* 读取jdbc.properties文件
*/
//1)创建Properties对象
Properties prop = new Properties();
//构造输入流
/**
* 相对路径: . 这个点代表当前目录。当前目录本质上是java命令运行的目录
* java项目: 在ecplise中,当前目录指向项目的根目录。
* web项目: 当前目录指向%tomcat%/bin目录
* 1)结论: 在web项目不能使用相对路径
*
* web项目中加载配置文件: ServletContext.getRealPath() / getResourceAsStream() 这种方式对于jdbcUtil这个工具而言,放到java项目中找不到ServletContext对象,不通用的!
* 2)不能使用ServletContext读取文件
*
* 3)使用类路径方式读取配置文件
*
*/
//1)获取类的对象
Class clazz = JdbcUtil.class;
//2) 使用类路径的读取方法去读取文件
/**
* 这个斜杠:代表项目的类路径的根目录。 类路径: 查询类的目录/路径
* java项目下: 类路径的根目录,指向项目的bin目录
* web项目下:类路径的根目录,指向项目的WEB-INF/classes目录
*
* 只有把配置文件放在src目录的根目录下,那么这些文件就会自动拷贝到项目的类路径根目录下。
*/
InputStream in = clazz.getResourceAsStream("/jdbc.properties");
// File f = new File(clazz.getResource("/").getFile());
// System.out.println(f.getAbsolutePath());
//构造输入流
// InputStream in = new FileInputStream("./src/jdbc.properties");
//2)加载文件
prop.load(in);
//3)读取文件内容
url = prop.getProperty("url");
user = prop.getProperty("user");
password = prop.getProperty("password");
driverClass = prop.getProperty("driverClass"); // 测试是否从properties中读到
System.out.println(url);
System.out.println(user);
System.out.println(password);
System.out.println(driverClass); Class.forName(driverClass);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取连接方法
*/
public static Connection getConnection(){
try {
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
} /**
* 释放资源的方法
*/
public static void close(Statement stmt,Connection conn){
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
} if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
} /**
* 释放资源的方法
*/
public static void close(ResultSet rs,Statement stmt,Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
} if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
} public static void main(String[] args) {
System.out.println(JdbcUtil.getConnection());
} }

注意:

其中的jdbc.properties文件在src目录下:

jdbc.properties中的内容如下:

url=jdbc:mysql://localhost:3306/test
user=root
password=123456
driverClass=com.mysql.jdbc.Driver

JDBC基础篇(MYSQL)——自定义JDBCUtil工具类的更多相关文章

  1. (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】

    (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢 ...

  2. (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】

    (3.13)mysql基础深入——mysql 日志分析工具之mysqlsla 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 ...

  3. 【SSH三大框架】Hibernate基础第二篇:编写HibernateUtil工具类优化性能

    相对于上一篇中的代码编写HibernateUtil类以提高程序的执行速度 首先,仍然要写一个javabean(User.java): package cn.itcast.hibernate.domai ...

  4. Maven基础&&Spring框架阶段常用工具类整理

    常用工具类 1.密码加密工具类: package com.itheima.utils; import java.security.MessageDigest; import sun.misc.BASE ...

  5. Android 自定义Dialog工具类

    由于项目的需要,系统的弹出框已经不能满足我们的需求,我们需要各式各样的弹出框,这时就需要我们去自定义弹出框了. 新建布局文件 dialog_layout.xml,将下面内容复制进去 <?xml ...

  6. spring-boot-jpa 自定义查询工具类

    1.pom文件中添加如下配置 <dependency> <groupId>org.springframework.boot</groupId> <artifa ...

  7. 黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API

    ---------- android培训.java培训.期待与您交流! ---------- 一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制 ...

  8. Java基础---泛型、集合框架工具类:collections和Arrays

    第一讲     泛型(Generic) 一.概述 1.JDK1.5版本以后出现的新特性.用于解决安全问题,是一个类型安全机制. 2.JDK1.5的集合类希望在定义集合时,明确表明你要向集合中装入那种类 ...

  9. 对于java自定义的工具类的提炼 注意事项

    1.工具类的方法都用static修饰. 因为工具类一般不创建对象,直接类名.方法()使用 2.一些 定义的常亮需要 public static final 修饰. 3.一些与数据库的连接之类的设定 , ...

随机推荐

  1. Kettle——简介

    Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,数据抽取高效稳定 Kettle 的主作者是 Matt ,他在 2003 年就开始了这个项目,在  ...

  2. 微信小程序云开发-数据库-列表页携带id跳转到详情页

    一.新建页面 新建列表页"pages/goodslist/goodslist",新建列表详情页"pages/gooddetail/gooddetail"  二. ...

  3. Leetcode:面试题55 - II. 平衡二叉树

    Leetcode:面试题55 - II. 平衡二叉树 Leetcode:面试题55 - II. 平衡二叉树 Talk is cheap . Show me the code . /** * Defin ...

  4. SSM框架,在Html界面利用ajax,json,jQuery实现省市区下拉框联动

    1.先生成省市区表格 2.建立实体类 3.在html画出下拉框 <select id="province"> <option value="" ...

  5. odoo12学习之javascript

    本文来源:https://www.jianshu.com/p/1a47fac01077 Odoo12 Javascript 参考指南   本文介绍了odoo javascript框架.从代码行的角度来 ...

  6. php获取当前用户ip

    function wcs_get_onlineip() { $onlineip = ''; if(getenv('HTTP_CLIENT_IP') && strcasecmp(gete ...

  7. 面试问题记录 三 (JavaWeb、JavaEE)

    前言 这块还是比较关键的,考察你对整个业务流程的熟练度吧,虽然企业级的项目没有接触过,但像最基本的内容必须得融会贯通,这一点我感觉自己还是处于浅层,没有深入的去思考以及练习过,其实就像那句话,&quo ...

  8. synchronized 优化手段之锁膨胀机制!

    synchronized 在 JDK 1.5 之前性能是比较低的,在那时我们通常会选择使用 Lock 来替代 synchronized.然而这个情况在 JDK 1.6 时就发生了改变,JDK 1.6 ...

  9. SpringCloud升级之路2020.0.x版-6.微服务特性相关的依赖说明

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford spring-cl ...

  10. 2020年Android开发年终总结之如何挤进一线大厂?

    前言 年底总是一个充满回顾与展望的日子,在2020这场哀鸿遍野的"寒冬"里尤为明显. 其实不管是公司.集体还是个人,都需要在这个时候找个机会停下来,思考一下这一年来的收获与成长.失 ...