JDBC之使用懒汉式单例创建JDBC工具类
来源:互联网 发布:炫舞炸家族邀请软件 编辑:程序博客网 时间:2024/05/17 21:46
JdbcUtilsSingleton代码如下:
package cn.itcast.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 使用单例模式创建JDBC工具类 */public final class JdbcUtilsSingleton {//省略localhost:3306,这些信息通常从配置文件中读取private String url = "jdbc:mysql:///jdbc";private String username = "root";private String password = "root";//懒汉式单例private static JdbcUtilsSingleton singleton;/** * 构造器私用,防止直接创建对象, * 通过反射或反序列化可以破解单例 */private JdbcUtilsSingleton(){}/** * 延迟加载,这个方法必须在JDK5以后执行才不会有问题 * @return */public static JdbcUtilsSingleton getInstance() {if(singleton == null) {//加入有一个线程走到这里,然后又然给另一个线程执行完synchronized(JdbcUtilsSingleton.class) {if(singleton == null) {singleton = new JdbcUtilsSingleton();}}}return singleton;}//保证只是注册一次驱动static{try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {throw new ExceptionInInitializerError(e);}}/** * 获取连接 * @return * @throws SQLException */public Connection getConnection() throws SQLException {return DriverManager.getConnection(url, username, password);}/** * 释放资源 */public void free(ResultSet rs, Statement st, Connection conn) {//规范的关系连接的方式try{if(rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();}finally{try{if(st != null) {st.close();}} catch (SQLException e) {e.printStackTrace();}finally {if(conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}}}
测试类代码如下:package cn.itcast.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 测试类 */public class BaseSingleton {public static void main(String[] args) throws SQLException, ClassNotFoundException {template();}/** * 比较严谨的实现方式 * @throws ClassNotFoundException * @throws SQLException */public static void template() throws ClassNotFoundException, SQLException {Connection conn = null;Statement st = null;ResultSet rs = null;try {//首先需要获取实例,然后获取连接conn = JdbcUtilsSingleton.getInstance().getConnection();//创建语句st = conn.createStatement();//执行语句rs = st.executeQuery("select * from user");//处理结果集while(rs.next()) {System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t"+ rs.getObject(3) + "\t" + rs.getObject(4));}} finally {JdbcUtils.free(rs, st, conn);}}}
运行结果:1 zhangsan 2017-06-30 100.0
2 lisi 2017-06-06 200.0
3 wangwu 2017-05-30 300.0
阅读全文
0 0
- JDBC之使用懒汉式单例创建JDBC工具类
- 创建jdbC的工具类
- JDBC : 使用DBUtils 工具类
- Jdbc-数据库使用工具类
- 使用工具类完成JDBC
- 使用JDBC链接数据库之连接数据库通用工具类
- J2EE进阶之JDBC工具类DbUtils使用 二十
- JDBC之DbUtils工具
- MySQL之JDBC链接工具类
- 开源JDBC工具类之DbUtils解析
- JDBC连接关闭之工具类
- jdbc数据库链接之抽取工具类
- JDBC工具类使用C3P0连接池
- JDBC第一篇--【介绍JDBC、使用JDBC连接数据库、简单的工具类】
- jdbc封装工具类
- JDBC工具类
- JDBC-数据库连接工具类
- JDBC工具类
- 导航控制器切换效果
- C存储类
- properties使用变量
- Android监听前后台切换展示开屏广告
- flv.js的用法与说明总结
- JDBC之使用懒汉式单例创建JDBC工具类
- 栈与堆
- Java简单记事本
- 相亲对象判别基于K-近邻算法
- Python 3.6 由于lxml依赖关系, 导入docx或python-docx失败的问题
- OpenCV中feature2D学习——SIFT和SURF算子实现特征点提取与匹配
- 如何踏上人工智能之路(机器学习篇)
- python web service
- JPA是什么?怎样开发JPA应用?