简单实现JDBC自动加载驱动,简化数据连接和关闭数据库连接
package util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
* 较为繁琐并且存在【通用性代码】
* 1. 数据库连接的过程
* 驱动加载,必要参数和获取数据库连接
* 2. 数据库操作使用的资源关闭问题
* <p>
* JDBCUtil这个工具类能够给我们提供什么便利
* 1. 自动加载驱动,预处理所有的必要参数
* 2. 简化获取数据库连接的方法,改为getConnection();
* 3. 简化关闭数据库连接使用的资源,改为统一的close方法
* 4. 所有的方法都是通过类名直接调用,摆脱类对象约束,使用static修饰的静态成员方法
*
* @author Anonymous
*/
public class JdbcUtil {
// 数据库连接所需的必要条件
private static String url = null;
private static String user = null;
private static String password = null;
// 使用静态代码块完成自动加载,辅助程序运行的必要参数
static {
try {
// 1. 准备当前db.properties输入字节流对象
FileInputStream fis = new FileInputStream(new File("./src/db.properties"));
// 2. 获取一个Properties类对象
Properties properties = new Properties();
// 3. 使用load方法,获取db.properties文件内容到Properties类对象
properties.load(fis);
// 4. 通过Properties类对象,获取对应的属性
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
Class.forName(properties.getProperty("driverClass"));
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 静态成员方法,获取对应数据库的java.sql.Connection连接对象
*
* @return java.sql.Connection 数据库连接对象,如果发生意外返回null
*/
public static Connection getConnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/**
* 关闭数据库Connection连接对象
*
* @param connection java.sql.Connection 数据库连接对象
*/
public static void close(Connection connection) {
close(connection, null, null);
}
/**
* 关闭数据库Connection连接对象,以及Statement数据库SQL语句搬运工对象
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
*/
public static void close(Connection connection, Statement statement) {
close(connection, statement, null);
}
/**
* 关闭数据库Connection连接对象,Statement数据库SQL语句搬运工对象以及查询结果集对象ResultSet
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
* @param resultSet java.sql.ResultSet 查询结果集类对象
*/
public static void close(Connection connection, Statement statement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
简单实现JDBC自动加载驱动,简化数据连接和关闭数据库连接的更多相关文章
- JavaEE JDBC 怎么加载驱动
JDBC怎么加载驱动 @author ixenos 分析 1.JDBC是一套连接数据库的接口(放在java.util.sql.Driver类中),不同的数据库依此接口各自实现Java连接到数据库的操作 ...
- Inside GDALAllRegister之二: 自动加载驱动
代码 GetGDALDriverManager()->AutoLoadDrivers(); 包含了两部分: 首先获得GDALDriverManager的singleton对象的指针,这点之 ...
- JS简单实现滚动自动加载新内容(懒加载)
加载源 // 这里存后台发来的数据 var galleryList = [ { src: "./images/1.jpeg", desc: "11111" }, ...
- PHP自动加载下——PSR4
1.先来介绍一下PSR规范 PHP-FIG,它的网站是:www.php-fig.org.就是这个联盟组织发明和创造了PSR规范,其中自动加载涉及其中两个规范,一个是PSR0,一个是PSR4, PSR0 ...
- java连接数据库加载驱动到java项目
java连接数据库 package com.cook.zheng; import java.sql.Connection; import java.sql.DriverManager; public ...
- JDBC:加载数据库驱动、连接数据库(详细讲解)
加载数据库驱动: 1)由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构: 2)JDBC将整个数据库驱动器在底层抽象成 ...
- java基础-jdbc——三种方式加载驱动建立连接
String url = "jdbc:mysql://localhost:3306/student?Unicode=true&characterEncoding=utf-8" ...
- JDBC详解系列(二)之加载驱动
---[来自我的CSDN博客](http://blog.csdn.net/weixin_37139197/article/details/78838091)--- 在JDBC详解系列(一)之流程中 ...
- JDBC加载驱动的方法+statement
加载驱动方法 1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 2. DriverManager.r ...
随机推荐
- 7.20T1
排序(sort) [问题描述] 有 n 个人依次站在小 A 面前.小 A 会依次对这 n 个人进行 m 次操作. 每次操作选择一个位置 k,将这 n 个人中的所有身高小于等于当前 k 位置的 人的身高 ...
- 0079 Ehcache 3.x应用入门及通过JCache与Spring整合
基本要素:版本.概念与抽象 Ehcache 3.x是一个用Java语言实现的缓存库,并且实现了 JSR107规范 Ehcache从2.x升级到3.x后,Maven依赖从 net.sf.ehcache: ...
- AT3576 Popping Balls
AT3576 Popping Balls 好题!一种以前没怎么见过的思路! %%ywy 以什么方式,什么位置统计本质不同的方案,才能不重不漏是处理所有计数问题的主心骨. 本题难以容斥.难以DP. 所以 ...
- C#调用新浪微博API
WebRequest wq = WebRequest.Create(this.address); HttpWebRequest hq = wq as HttpWebRequest; string us ...
- Int和Integer(课上测试)
截图 第一段代码: 第二段代码: 两段代码出现不同结果的原因:Integer类型的取值范围为-128至128之间,小于128的数(图1)为正确,大于128的数(图2)为错误
- 苹果电脑(Macbook Pro)开机后没有声音的解决
有时候 Mac 从睡眠状态恢复之后没有声音,这是 Mac OS X 系统的一个 Bug.这是因为 Mac OS X 的核心音频守护进程「coreaudiod」出了问题,虽然简单的重启电脑就能解决,但是 ...
- ubuntu16.04下如何安装dtc工具?
答: sudo apt-get install device-tree-compiler -y
- easyUI之progressbar进度条
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- jdk1.8 HashMap & ConcurrentHashMap
JDK1.8逐字逐句带你理解ConcurrentHashMap https://blog.csdn.net/u012403290 JDK1.8理解HashMap https://blog.csdn.n ...
- Ubuntu防火墙常用命令
Ubuntu默认防火墙安装.启用.配置.端口.查看状态相关信息 最简单的一个操作: sudo ufw status(如果你是root,则去掉sudo,ufw status)可检查防火墙的状态,我的返回 ...