本文以讲解用单利模式实现一个简单的JDBC实用工具类

JDBC连接的四个基本步骤:
1、加载相应数据库驱动
2、建立相应数据库连接
3、构建Statement语句,即增删改查SQL语句
4、执行Statement语句 JDBC使用工具类的组成:
1、Connection方法
2、update方法,主要负责增删改等数据库操作
3、query方法,主要负责查询操作
4、关闭数据库连接,释放资源 单例模式的介绍:
概述:单例模式(Singleton Pattern)是 Java 中最简单的设计模式(设计模式主要是用来解决实际开发过程中出现的问题的一种思路或方法)之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
作用:保证一个类仅有一个实例,并提供一个访问它的全局访问点。这样控制了系统中该类对象的数目,避免了过度创建多余对象浪费系统资源
实现思路:判断系统是否已经有这个单例,如果有则返回,如果没有则创建 实现代码如下:
public class DBUtils {
static private Connection conn;
static private PreparedStatement pstmt;
static private ResultSet rs; // 使用单例模式实现的数据库Connection方法
static public Connection getConnection() {
try {
if (conn == null) {// 如果已经存在一个connection的实例化对象,则直接使用,避免大量创建多余对象浪费系统资源
Properties properties = new Properties();// 实例化一个properties加载相应数据库的配置信息
properties.load(DBUtils.class.getResourceAsStream("properties文件路径"));
String driver = properties.getProperty("driverClassName");
String url = properties.getProperty("url");
String username = properties.getProperty("username");
String password = properties.getProperty("password"); Class.forName(driver);// 加载数据库驱动
conn = DriverManager.getConnection(url, username, password);// 建立数据库连接
}
return conn;
} catch (Exception e) {
System.out.println("连接数据库不成功" + e.getMessage());
}
return null;
} // 实现基本的数据库增删改操作
public int update(String sql, Object... obj) {
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);// 构建Statement查询语句
for (int i = 0; i < obj.length; i++) {
pstmt.setObject(1 + i, obj[i]);
}
int i = pstmt.executeUpdate();// 执行Statement语句
return i;// 返回操作影响响应表的行数
} catch (Exception e) {
System.out.println("更新数据失败");
}
return 0;
} // 实现数据库的查询操作,这里以将查询结果构造成一个Map键值对的形式并存入List线性表中为例
public List<Map<String, Object>> query(String sql, Object... obj) {
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < obj.length; i++) {
pstmt.setObject(1 + i, obj[i]);
}
rs = pstmt.executeQuery();
////////////////////////
ArrayList<Map<String, Object>> arrayList = new ArrayList<Map<String, Object>>();
ResultSetMetaData metaData = rs.getMetaData();//获得数据库中相应表结构
while (rs.next()) {
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 0; i < metaData.getColumnCount(); i++) {
map.put(metaData.getColumnLabel(i + 1), rs.getObject(i + 1));
} arrayList.add(map);
}
return arrayList;
///////////////////////
} catch (Exception e) {
// TODO: handle exception
}
return null;
} // 关闭数据库连接,数据库连接的关闭应该自低向上依次关闭
public void close() {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
System.out.println("关闭失败");
}
}
}

JDBC工具类实例的更多相关文章

  1. java使用注解和反射打造一个简单的jdbc工具类

    a simple jdbc tools 如有转载和引用,请注明出处,谢谢 1. 定义我们需要的注解 要想实现对数据库的操作,我们必须知道数据表名以及表中的字段名称以及类型,正如hibernate 使用 ...

  2. jdbc工具类1.0

    package cn.zhouzhou; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManag ...

  3. 自己实现的JDBC工具类

    最近做了个后台应用程序,刚开始用Spring+iBatis来做的,后来因为种种原因,不让用Spring.iBatis以及一些开源的工具包.   于是用JDBC重写了原来的Service实现,项目做完了 ...

  4. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. 开源JDBC工具类DbUtils

    本篇将会详细地介绍Apache公司的JDBC帮助工具类DbUtils以及如何使用.在上一篇中我们已经通过将以前对dao层使用JDBC操作数据库的冗余代码进行了简易封装形成自己的简单工具类JdbcUti ...

  7. MySQL JDBC事务处理、封装JDBC工具类

    MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...

  8. DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类) 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据 ...

  9. JDBC第三篇--【事务、元数据、改造JDBC工具类】

    这是我JDBC的第一篇 http://blog.csdn.net/hon_3y/article/details/53535798 这是我JDBC的第二篇 http://blog.csdn.net/ho ...

随机推荐

  1. 201521123077 《Java程序设计》第1周学习总结

    1. 本章学习总结 java语言的历史 dos下运行 java文件 Math ,String ,Scanner,Interger等常用类的使用 jdk,jre,jvm等概念的了解 classpath, ...

  2. 201521123067 《Java程序设计》第10周学习总结

    201521123067 <Java程序设计>第10周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 Q1.final ...

  3. 陈敏 Java课设实验报告

    1.团队课程设计博客链接 http://www.cnblogs.com/ohanna/p/7064305.html 2.个人负责模板或任务说明 1.负责完成主界面 2.随机数的产生, 3.数字大小的比 ...

  4. panda库------对数据进行操作---合并,转换,拼接

    >>> frame2 addr age name 0 beijing 12 zhang 1 shanghai 24 li 2 hangzhou 24 cao >>> ...

  5. 数据库复用代码【c3p0配置文件、数据库连接池】

    前言 为了复用,记载一些以前写过的工具类.方法 c3p0配置文件[c3p0-config.xml] <?xml version="1.0" encoding="UT ...

  6. weblogic服务器上类或者方法找不到的解决办法

    下面以eclipse-birt(报表)为例,介绍这种问题出现的原因以及解决之道: 分析比较好的见:http://developer.actuate.com/community/forum/index. ...

  7. 如何用kaldi做孤立词识别-初版

    ---------------------------------------------------------------------------------------------------- ...

  8. How many Knight Placing? UVA - 11091

    How many Knight Placing? Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %l ...

  9. bzoj3156 防御准备 - 斜率优化

    Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sample Input 102 3 ...

  10. P1013

    问题 D: P1013 时间限制: 1 Sec  内存限制: 128 MB提交: 33  解决: 21[提交][状态][讨论版] 题目描述 " 找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手 ...