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 ...
随机推荐
- apk动态调试
android.os.Debug类提供了isDebuggerConnected()用于检测是否有调试器链接: AndroidManifest的application节点中加入android:debug ...
- Linux内核模块驱动加载与dmesg调试
因为近期用到了Linux内核的相关知识,下面随笔将给出内核模块的编写记录,供大家参考. 1.运行环境 Ubuntu 版本:20.04 Linux内核版本:5.4.0-42-generic gcc版本: ...
- 操作系统实验(一)-Shell编程
操作系统实验:Shell编程 emmmmm,实验前老师发了一份实验说明,里面有教怎么配置虚拟机Ubuntu.这里就不做过多叙述,需要说明的是,kali和ubuntu都可以以shell运行这个C语言程序 ...
- LevelDB 源码解析之 Arena
GitHub: https://github.com/storagezhang Emai: debugzhang@163.com 华为云社区: https://bbs.huaweicloud.com/ ...
- Android studio 简易登录界面
•参考资料 [1]:视频资源 [2]:Android TextView设置图标,调整图标大小 •效果展示图 •前置知识 TextView EditText Button 以及按压效果,点击事件 •出现 ...
- Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布
微服务系统架构实践 开发语言Java 8 框架使用Spring boot 服务治理框架Dubbo 容器部署Docker 持续集成Gitlab CI 持续部署Piplin 注册中心Zookeeper 服 ...
- Elasticsearch优化 & filebeat配置文件优化 & logstash格式配置 & grok实践
Elasticsearch优化 & filebeat配置文件优化 & logstash格式配置 & grok实践 编码转换问题(主要就是中文乱码) (1)input 中的cod ...
- Python基础(十八):面向对象“类”第一课
记住:编写函数就是"面向过程",编写类就是"面向对象".类也是很多同学的一大学习难点,因此我这里还是准备带着大家学习一下. 类和对象对比 对象 : 具有行为和属 ...
- Dubbo 编解码那些事
一.背景 笔者在一次维护基础公共组件的过程中,不小心修改了类的包路径.糟糕的是,这个类被各业务在facade中进行了引用.传递.幸运的是,同一个类,在提供者和消费者的包路径不一致,没有引起各业务报错. ...
- PAT B1039/A1092 到底买不买项链
小红买些珠子做项链,但是卖家不肯拆散了卖,于是帮忙判断一下,某串珠子是否全部包含自己想要的珠子,如果是告诉她有多少多余的珠子,如果不是,又缺了那些珠子现在为了方便起见用"0-9"& ...