专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 源码分析JDBC工具类的构建

源码分析JDBC工具类的构建

更新时间:2021-02-20 17:11:26 来源:动力节点 浏览979次

JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。除此之外,JDBC中还有许多工具类用来实现各种功能,本文我们从源码出发,来分析一下JDBC工具类的构建

1. 资源释放工作的整合

/**

 * 释放资源

 * @param conn

 * @param st

 * @param rs

 */

public static void release(Connection conn , Statement st , ResultSet rs){

closeRs(rs);

closeSt(st);

closeConn(conn);

}



private static void closeRs(ResultSet rs){

try {

if(rs != null){

rs.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

rs = null;

}

}



private static void closeSt(Statement st){

try {

if(st != null){

st.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

st = null;

}

}



private static void closeConn(Connection conn){

try {

if(conn != null){

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

conn = null;

}

}

2. 驱动防二次注册

/**

 * 获取连接对象

 * @return

 */

public static Connection getConn(){

Connection conn = null;

try {

Class.forName(driverClass);

//静态代码块 ---> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());

//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");

//2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。

conn = DriverManager.getConnection(url, name, password);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

3. 使用properties配置文件

在src底下声明一个文件 xxx.properties ,里面的内容吐下:

      driverClass=com.mysql.jdbc.Driver

       url=jdbc:mysql://localhost/student

       name=root

       password=root

在工具类里面,使用静态代码块,读取属性

static{

try {

//1. 创建一个属性配置对象

Properties properties = new Properties();

InputStream is = new FileInputStream("jdbc.properties"); //对应文件位于工程根目录

 

//使用类加载器,去读取src底下的资源文件。 后面在servlet  //对应文件位于src目录底下

//InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");

//导入输入流。

properties.load(is);



//读取属性

driverClass = properties.getProperty("driverClass");

url = properties.getProperty("url");

name = properties.getProperty("name");

password = properties.getProperty("password");



} catch (Exception e) {

e.printStackTrace();

}

}

源代码如下:

public class JDBCUtil {



static String driverClass = null;

static String url = null;

static String name = null;

static String password= null;



static{

try {

//1. 创建一个属性配置对象

Properties properties = new Properties();

InputStream is = new FileInputStream("jdbc.properties");



//使用类加载器,去读取src底下的资源文件。 后面在servlet

// InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");

//导入输入流。

properties.load(is);



//读取属性

driverClass = properties.getProperty("driverClass");

url = properties.getProperty("url");

name = properties.getProperty("name");

password = properties.getProperty("password");



} catch (Exception e) {

e.printStackTrace();

}

}



/**

 * 获取连接对象

 * @return

 */

public static Connection getConn(){

Connection conn = null;

try {

Class.forName(driverClass);

//静态代码块 ---> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());

//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");

//2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。

conn = DriverManager.getConnection(url, name, password);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}



/**

 * 释放资源

 * @param conn

 * @param st

 * @param rs

 */

public static void release(Connection conn , Statement st , ResultSet rs){

closeRs(rs);

closeSt(st);

closeConn(conn);

}



private static void closeRs(ResultSet rs){

try {

if(rs != null){

rs.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

rs = null;

}

}



private static void closeSt(Statement st){

try {

if(st != null){

st.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

st = null;

}

}



private static void closeConn(Connection conn){

try {

if(conn != null){

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

conn = null;

}

}

}

我们通过详细的代码不难看出JDBC工具类的构建主要还是对各种文件的配置,在本站的JDBC教程中对JDBC连接数据库涉及到的各个案例都有很深入的讲解,想要学好JDBC的小伙伴就需要深入解析这些代码,真正弄懂了也就代表我们学会了。

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>