`

使用单例写JDBC操作数据库的工具类

 
阅读更多
package cn.jdbctest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 单例模式
 * @author zhangjl
 * @date   2013-12-12
 */
public final class JdbcUtils {
	private final String URL = "jdbc:mysql://localhost:3306/user";
	private final String USER = "root";
	private final String PASSWORD = "root";
	
	private Connection conn=null;
	private JdbcUtils instance=null;
	//private JdbcUtils instance=new JdbcUtils();在类创建时就加载。
	/**
	 * 防止构建实例
	 */
	private JdbcUtils(){
		
	}
	
	static{
		try {
			Class.forName("com.jdbc.mysql.Driver");
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
	}
	
	/**
	 * 延时加载(懒加载),在第一次调运时在加载
	 * @return
	 */
	public JdbcUtils getInstance(){
		if(instance==null){
			synchronized (instance) {
				if(instance==null){
					instance= new JdbcUtils();
				}
			}
		}
		return instance;
	}
	
	public  Connection getConn() {
		try {
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}

	public void free(ResultSet rs, Statement stat, Connection conn) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				if (stat != null) {
					try {
						stat.close();
					} catch (SQLException e) {
						e.printStackTrace();
					} finally {
						if (conn != null) {
							try {
								conn.close();
							} catch (SQLException e) {
								e.printStackTrace();
							}
						}
					}
				}
			}
		}
	}
}

 

分享到:
评论

相关推荐

    单例 jdbc 数据库连接 工具类

    单例 jdbc 数据库连接 工具类 里面是sqlserver的示例,需要的话自己可以改成其他数据库

    Oracle jdbc 单例 工具类

    Oracle jdbc 单例 工具类 以及Oracle jar包 需要的话可以自己改成其他数据库

    JavaEE+JDBC+Servlet+EL表达式的员工信息管理系统源码+数据库+项目说明(高分课设).zip

    使用PageUtils分页工具类 **2021/10/8 更新** 1. dao层和service层部分采用单例模式(懒汉式-不支持多线程) 2. service层部门采用工厂模式 ## 源码 [v1.0 - servlet-v1.0]...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例149 使用SwingWorker类完成耗时操作 194 第7章 反射与异常处理 195 7.1 反射的基础 196 实例150 实例化Class类的5种方式 196 实例151 获得Class对象表示实体的名称 197 实例152 查看类的声明 198 实例153 查看类...

    疯狂JAVA讲义

    7.8 操作集合的工具类:Collections 283 7.8.1 排序操作 283 7.8.2 查找,替换操作 287 7.8.3 同步控制 288 7.8.4 设置不可变集合 288 7.9 烦琐的接口:Enumeration 289 7.10 本章小结 290 本章练习 290 第8...

    Java核心技术II(第8版)

    11.2.2 使用编译工具 11.2.3 一个示例:动态Java代码生成 11.3 使用注解 11.3.1 一个示例:注解事件处理器 11.4 注解语法 11.5 标准注解 11.5.1 用于编译的注解 11.5.2 用于管理资源的注解 11.5.3 元注解 11.6 源码...

    Spring面试题

    6. 继承类使用显式多态 7. 表字段要少,表关联不要怕多,有二级缓存撑腰 7. Struts工作机制?为什么要使用Struts? 工作机制: Struts的工作流程: 在web应用启动时就会加载初始化ActionServlet,ActionServlet从 ...

    java8集合源码分析-The-Road-To-Bald-Man:Java技能加点,秃顶之路

    JUC并发工具类 网络编程 新特性 JVM 类加载机制 字节码执行机制 JVM内存模型 GC垃圾回收 JVM性能监控与故障定位 JVM调优 二、数据结构和算法 数据结构 字符串 数组 链表 二叉树 堆、栈、队列 哈希 算法 查找 排序 ...

    Java范例开发大全 (源程序)

     实例218 使用Collections类对List的排序操作 393  实例219 LinkedList的添加删除操作 395  实例220 运用Vector 397  实例221 改变Properties文件中的键值 399  第13章 多线程编程(教学视频:121分钟) ...

    java范例开发大全(pdf&源码)

    实例218 使用Collections类对List的排序操作 393 实例219 LinkedList的添加删除操作 395 实例220 运用Vector 397 实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程...

    Java范例开发大全(全书源程序)

    实例218 使用Collections类对List的排序操作 393 实例219 LinkedList的添加删除操作 395 实例220 运用Vector 397 实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 ...

    java范例开发大全源代码

     实例193 使用GregorianCalendar类获取系统的当前时间 326  实例194 使用SimpleDateFormat类获取系统的当前时间 329  实例195 显示某年某月某一周的信息 330  实例196 显示某年某月的信息 332  实例197...

    java范例开发大全

    实例218 使用Collections类对List的排序操作 393 实例219 LinkedList的添加删除操作 395 实例220 运用Vector 397 实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程...

    二十三种设计模式【PDF版】

    可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于 和...

    Java学习笔记-个人整理的

    {4.8}Collections集合工具类}{86}{section.4.8} {4.9}Comparable与Comparator}{86}{section.4.9} {4.9.1}Comparable}{86}{subsection.4.9.1} {4.9.2}Comparator}{87}{subsection.4.9.2} {4.10}包装类}{87}{...

Global site tag (gtag.js) - Google Analytics