本文以讲解用单利模式实现一个简单的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. 201521123023《Java程序设计》第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 Q1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过 ...

  2. 201521123016 《Java程序设计》第3周学习总结

    1. 本周学习总结 2. 书面作业 2.1代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  3. JAVA课程设计 刘舒婷 201521123096

    1.团队课程设计博客链接 2.个人负责模块说明 2.1 界面菜单的设计: 2.2 录入学生信息: 2.3 对已录入的学生信息进行修改: 3.个人代码提交记录截图 4.自己负责模块或任务详细说明 4.1 ...

  4. java课程设计——算术运算测试个人博客

    1.团队课程设计链接 团队博客:http://www.cnblogs.com/yytx/p/7064790.html 2.个人负责模块 有关排行榜的界面设计和代码编写 3.自己的代码提交记录截图 4. ...

  5. 将缓冲区的数字字符串转化成BCD码数据_INT PubNumericToBCDStr(_UCHR *pcNStr, _INT iNLen, _UCHR *pcBCDStr)

    INT PubNumericToBCDStr(_CHR *pcNStr, _INT iNLen, _CHR *pcBCDStr) { _UCHR *pN = pcNStr; _UCHR *pB = p ...

  6. Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

    什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术 ...

  7. Eclipse读取含有extjs的项目文件时卡死或者编写ExtJS时卡

    新建一个Eclipse或MyEclipse项目时,关掉验证. 项目右键-->Properties-->Builders--> 不勾选(JavaScript Validator.Val ...

  8. Linux安装pytorch的具体过程以及其中出现问题的解决办法

    1.安装Anaconda 安装步骤参考了官网的说明:https://docs.anaconda.com/anaconda/install/linux.html 具体步骤如下: 首先,在官网下载地址 h ...

  9. Mysql 基于 Amoeba 的 读写分离

    首先说明一下amoeba 跟 MySQL proxy在读写分离的使用上面的区别: 在MySQL proxy 6.0版本 上面如果想要读写分离并且 读集群.写集群 机器比较多情况下,用mysql pro ...

  10. 基于MyBatis3.0.6的基本操作介绍

    每 一 个 MyBatis 的 应 用 程 序 都 以 一 个 SqlSessionFactory 对 象 的 实 例 为 核 心 .SqlSessionFactory本身是由SqlSessionFa ...