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
作者: 杨校
出处: https://blog.csdn.net/kese7952
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
IT技术变化快,技术人该何去何从?
正确答案应该是不可知的,毕竟人与人不同,每个人都有自己的难处和想法,以下都是我设想的出路: 第一个大方向是靠跳槽,包括几个选择: (1)向上跳,比如非FLAG跳FLAG;收入上升,技术上升,能力和评价上升; (2)平行跳,FB跳Google,Google跳FB;跳槽,就是在自己工作腻了的地方,去别人工作腻了的地方;平行跳到Google,然后混日子,假设过了20年Google倒了肯定还有新Google出来,接着面试接着混; (3)向下跳,去更次一级的公司混日子,公司倒了就接着跳更差的,实在没人要做contractor; 跳槽是一种心态,反正跳惯了面试比吃鸡还容易还随意。每个公司耗几年,大半辈子就过去了,也快退休了,想那么多干嘛。要求无非是千题在手,大包我有,各公司横着走。 第二个大方向是努力工作: (1)当码工的什么都懂、什么都会,名声好人员熟,自然不容易被淘汰; (2)有些时候,有机会可能还混成manager,管人了,当然,这也并不容易;说不定还把技术给弄夹生了; 第三个大方向是创业,即使能力一般: (1)别人创业,跟着去加入; (2)自己打零工,接私活,写App,做FreeLance...
-
下一篇
Java利用序列化实现对象的深拷贝
浅拷贝 对象实现的接口Cloneable的clone()方法存在一个缺陷,它并不会将对象的所有属性全部拷贝过来,而是有选择性的拷贝,即浅拷贝!基本规则如下: 1、 基本类型 如果变量是基本很类型,则拷贝其值,比如int、float等。 2、 对象 如果变量是一个实例对象,则拷贝其地址引用,也就是说此时新对象与原来对象是公用该实例变量。 3、 String字符串 若变量为String字符串,则拷贝其地址引用。但是在修改时,它会从字符串池中重新生成一个新的字符串,原有字符串对象保持不变。 所以:浅拷贝只是Java提供的一种简单的拷贝机制,不便于直接使用。 利用序列化实现对象的深拷贝 如何利用序列化来完成对象的拷贝呢?在内存中通过字节流的拷贝是比较容易实现的。把母对象写入到一个字节流中,再从字节流中将其读出来,这样就可以创建一个新的对象了,并且该新对象与母对象之间并不存在引用共享的问题,真正实现对象的深拷贝。 public class CloneUtils { @SuppressWarnings("unchecked") public static <T extends Ser...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19
- MySQL数据库在高并发下的优化方案
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池