java编写连接数据库工具_Java的数据库连接工具类的编写

Java的数据库连接工具类的编写

步骤:

1. 定义变量

2. 通过反射进行读取配置文件

3. 实例化Properties读取配置文件中的各个属性

4. 关闭字节输入流

5. 类加载

6. 通过驱动管理的获取连接方法获取到连接对象

7. 释放资源

代码:

package cn.javabs.util;

import java.io.IOException;

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;

/**

* @author: Mryang

* Jdbc工具类: 工具类的含义是作为一个通用的辅助资料使用,简化开发流程,提高效率。

* 工具类一般使用“static”进行修饰,静态化

*static的优点

* |---- 1. 可以使用 【类名.函数名称】进行调用,不必再次创建对象

* |---- 2. 优于构造函数先执行

* |---- 4. 静态成员被所有对象所共享(静态数据达到成为共享数据)

* |---- 3. 随着类的加载而加载 (也就是说类运行了,静态成员也就跟随运行了)

*static的缺点

* |---- 1. 访问出现局限性,只能访问静态

* |---- 2. 静态成员的生命周期过长

* |---- 3. 不可以与this\super关键字同用

* |----因为this代表是当前类对象,而静态存在时,有可能没有对象

* |----因为super代表是父类对象,而静态存在时,有可能没有对象,

* |----而且静态优先于对象存在

* |----4.静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态;

*

*

**/

public class JdbcUtil {

// 定义 数据库驱动

private static String driverClass;

// 定义 数据库的连接

private static String url;

// 定义 数据库用户

private static String user;

// 定义 数据库用户的密码

private static String password;

// 静态代码块

static{

try {

// JdbcUtil.class是获得当前对象所属的class对象

// getClassLoader()是取得该Class对象的类装载器

// getResourceAsStream(“dbcfg.properties”) 调用类加载器的方法加载资源,返回是字节输入流

InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("dbcfg.properties");

// 实例化Properties对象,目的是为了创建props

Properties props = new Properties();

// 在props对象中可以进行加载属性列表到Properties类对象

props.load(in);//也就是说: 通过props对象进行加载输入流对象(in)

/*

* 通过getProperty方法用指定的键在此属性列表中搜索属性

*/

//也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-driverClass(被指定)

driverClass = props.getProperty("driverClass");

//也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-url(被指定)

url = props.getProperty("url");

//也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-user(被指定)

user = props.getProperty("user");

//也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-password(被指定)

password = props.getProperty("password");

//已经获取过配置文件中的属性键值对,将字节输入流进行释放关闭

in.close();

} catch (IOException e) {

// 转换异常抛出

throw new ExceptionInInitializerError("获取数据库配置文件信息失败");

}

try {

// 类加载-->驱动

Class.forName(driverClass);

} catch (ClassNotFoundException e) {

// 转换异常抛出

throw new ExceptionInInitializerError("加载驱动失败");

}

}

/**

* 获取连接

* @return: conn

*/

public static Connection getConnection(){

try {

//连接类型 连接对象 = 驱动管理中的获取连接(连接,用户名,密码)

Connection conn = DriverManager.getConnection(url,user,password);

// 将连接进行返回

return conn;

} catch (Exception e) {

// 转换异常抛出

throw new RuntimeException("链接数据库的url或用户名密码错误,请检查您的配置文件");

}

}

/**

* 释放资源

* 传递三个参数: 结果集对象 ,处理Sql语句对象 , 连接对象

* 无返回值状态

*/

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

//如果 结果集中不为空

if(rs!=null){

try {

rs.close();//将结果集中关闭

} catch (SQLException e) {

e.printStackTrace();

}

rs = null;

}

//如果处理Sql语句对象不为空

if(stmt!=null){

try {

stmt.close();//将处理Sql语句对象关闭

} catch (SQLException e) {

e.printStackTrace();

}

stmt = null;

}

//如果 连接不为空

if(conn!=null){

try {

conn.close();//将连接关闭

} catch (SQLException e) {

e.printStackTrace();

}

conn = null;

}

}

}

配置文件编写:

#driver config for mysql

driverClass=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/test

user=root

password=sorry

92323792381350400.gif

作者: 杨校

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。

本文同步分享在 博客“杨校”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.hexiang.utils.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.log4j.Logger; public class DBConnection { /** * 获得与数据库的连接 * * @param path * @return Connection */ public static Connection getConn(String classDriver, String url, String user, String pwd) { try { Class.forName(classDriver); return DriverManager.getConnection(url, user, pwd); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(DataSource dataSource) { try { return dataSource.getConnection(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(String jndiName) { try { Context ctx; ctx = new InitialContext(); DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/" + jndiName); return dataSource.getConnection(); } catch (NamingException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(Properties properties) { try { String driver = properties.getProperty("jdbc.driverClassName"); String url = properties.getProperty("jdbc.url"); String user = properties.getProperty("jdbc.username"); String password = properties.getProperty("jdbc.password"); Class.forName(driver); return DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } /** * oracle连接 * * @param path * @return Connection */ public static Connection getOracleConn(String

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值