JAVA连接、操作数据库的DBHelper
工厂模式的DBHelper
1 import java.sql.Connection;
2 import java.sql.DriverManager;
3 import java.sql.PreparedStatement;
4 import java.sql.ResultSet;
5 import java.sql.Statement;
6
7 /**
8 * 数据库工具类,负责完成打开、关闭数据库,执行查询或更新
9 * @author MKing
10 *
11 */
12 public class DbHelper {
13 /**
14 * 数据库URL
15 */
16 private static final String URL = "jdbc:mysql://localhost:3306/bookstore";
17 /**
18 * 登录用户名
19 */
20 private static final String USER = "root";
21 /**
22 * 登录密码
23 */
24 private static final String PASSWORD = "12345";
25
26 private static Connection connection = null;
27 private static Statement statement = null;
28
29 private static DbHelper helper = null;
30
31 static {
32 try {
33 Class.forName("com.mysql.jdbc.Driver");
34 } catch (ClassNotFoundException e) {
35 e.printStackTrace();
36 }
37 }
38
39 private DbHelper() throws Exception {
40 connection = DriverManager.getConnection(URL, USER, PASSWORD);
41 statement = connection.createStatement();
42 }
43
44 /**
45 * 返回单例模式的数据库辅助对象
46 *
47 * @return
48 * @throws Exception
49 */
50 public static DbHelper getDbHelper() throws Exception {
51 if (helper == null || connection == null || connection.isClosed())
52 helper = new DbHelper();
53 return helper;
54 }
55
56 /**
57 * 执行查询
58 * @param sql 要执行的SQL语句
59 * @return 查询的结果集对象
60 * @throws Exception
61 */
62 public ResultSet executeQuery(String sql) throws Exception {
63 if (statement != null) {
64 return statement.executeQuery(sql);
65 }
66
67 throw new Exception("数据库未正常连接");
68 }
69
70 /**
71 * 执行查询
72 * @param sql 要执行的带参数的SQL语句
73 * @param args SQL语句中的参数值
74 * @return 查询的结果集对象
75 * @throws Exception
76 */
77 public ResultSet executeQuery(String sql, Object...args) throws Exception {
78 if (connection == null || connection.isClosed()) {
79 DbHelper.close();
80 throw new Exception("数据库未正常连接");
81 }
82 PreparedStatement ps = connection.prepareStatement(sql);
83 int index = 1;
84 for (Object arg : args) {
85 ps.setObject(index, arg);
86 index++;
87 }
88
89 return ps.executeQuery();
90 }
91
92 /**
93 * 执行更新
94 * @param sql 要执行的SQL语句
95 * @return 受影响的记录条数
96 * @throws Exception
97 */
98 public int executeUpdate(String sql) throws Exception {
99 if (statement != null) {
100 return statement.executeUpdate(sql);
101 }
102 throw new Exception("数据库未正常连接");
103 }
104
105 /**
106 * 执行更新
107 * @param sql 要执行的SQL语句
108 * @param args SQL语句中的参数
109 * @return 受影响的记录条数
110 * @throws Exception
111 */
112 public int executeUpdate(String sql, Object...args) throws Exception {
113 if (connection == null || connection.isClosed()) {
114 DbHelper.close();
115 throw new Exception("数据库未正常连接");
116 }
117 PreparedStatement ps = connection.prepareStatement(sql);
118 int index = 1;
119 for (Object arg : args) {
120 ps.setObject(index, arg);
121 index++;
122 }
123 return ps.executeUpdate();
124 }
125
126 /**
127 * 获取预编译的语句对象
128 * @param sql 预编译的语句
129 * @return 预编译的语句对象
130 * @throws Exception
131 */
132 public PreparedStatement prepareStatement(String sql) throws Exception {
133 return connection.prepareStatement(sql);
134 }
135
136 /**
137 * 关闭对象,同时将关闭连接
138 */
139 public static void close() {
140 try {
141 if (statement != null)
142 statement.close();
143 if (connection != null)
144 connection.close();
145 } catch (Exception e) {
146 e.printStackTrace();
147 } finally {
148 helper = null;
149 }
150 }
151 }
JAVA连接、操作数据库的DBHelper的更多相关文章
- java连接操作数据库
Connection 类prepareStatement(String sql) 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库. PreparedState ...
- Java连接MySQL数据库及简单操作代码
1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...
- Java连接SqlServer2008数据库(转)
Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...
- 转载:Java连接MySQL 数据库的正确操作流程
转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html 以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- Java连接SqlServer2008数据库
Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...
- java连接MySql数据库 zeroDateTimeBehavior
JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常, 就是所见的:java.sql.SQLException: Cannot convert va ...
- JAVA连接Derby数据库
其实,JAVA连接Derby数据库也很简单,和一般的数据库操作一样:1.加载驱动2.获取连接3.进行数据库操作4.记得关闭连接 示例如下: import java.sql.ResultSet; imp ...
- java连接mongodb数据库
最近毕设需要用到这个数据库.然而又不会,没办法,只能上网学习学习. 记录一下java连接mongodb数据库的简单方法.这里只是记录一下学习.熟悉一下CURD方法. 但是毕业用到的是SpringBoo ...
- java连接mysql数据库详细步骤解析
java连接mysql数据库详细步骤解析 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar 第二步:导入下载的J ...
随机推荐
- 基于renren-fast的快速入门项目实战(实现报表增删改查)
基于renren-fast的快速入门项目实战(实现报表增删改查) 说明:renren-fast是一个开源的基于springboot的前后端分离手脚架,当前版本是3.0 官方开发文档需付费,对于新手而言 ...
- 第七届蓝桥杯省赛JavaB组——第十题压缩变换
题目: 压缩变换小明最近在研究压缩算法.他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比.然而,要使数值很小是一个挑战.最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面 ...
- epoll poll select区别
函数依赖 ( Functional Dependency,FD) select:http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html ...
- 【SqlServer】管理全文索引(FULL TEXT INDEX)
Sql Server中的全文索引(下面统一使用FULLTEXT INDEX来表示全文索引),是一种特定语言搜索索引功能.它和LIKE的不一样,LIKE主要是根据搜索模板搜索数据,它的效率比FULLTE ...
- Activiti工作流学习笔记(四)——工作流引擎中责任链模式的建立与应用原理
原创/朱季谦 本文需要一定责任链模式的基础,主要分成三部分讲解: 一.简单理解责任链模式概念 二.Activiti工作流里责任链模式的建立 三.Activiti工作流里责任链模式的应用 一.简单理解责 ...
- Java集合--Java核心面试知识整理(二)
目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 JAVA集合 2.1 接口继承关系和实现 2.2 List 2.2.1 ArrayList(数组) 2.2.2 ...
- 给出N个字符串恰好由三位字母(大小写)组成,再给出M个查询字符串,问每个查询字符串在N个字符中出现的次数。
1 #include<cstdio> 2 const int maxn = 100; 3 char S[maxn][5], temp[5]; 4 int hashTable[52 * 52 ...
- Spring (三)SpringAoP
1.Spring 的 AOP 简介 1.1 什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能 ...
- Centos下搭建LAMP+PHP
Centos下搭建LAMP+PHP LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管 ...
- 关于 Spring 中 getBean 的全流程源码解析
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你提出问题,就要给出解决方案! 最近有粉丝小伙伴反馈,与自己的上级沟通总是遇到障碍, ...