package com.qfedu.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 数据库会话
* @author 骆昊
*
*/
public class DBSession {
private Connection conn;
/**
* 开启事务
*/
public void beginTx() {
try {
conn.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
throw new DBException("开启事务失败", e);
}
}
/**
* 提交事务
*/
public void commitTx() {
try {
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
throw new DBException("提交事务失败", e);
}
}
/**
* 回滚事务
*/
public void rollbackTx() {
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
throw new DBException("回滚事务失败", e);
}
}
/**
* 执行查询
* @param sql SQL语句
* @param handler 结果集处理器
* @param params 替换SQL语句中占位符的参数
* @return 代表查询结果的对象
*/
public <T> T query(String sql, ResultSetHandler<T> handler, Object... params) {
if (sql == null) {
throw new DBException("没有指定要执行的SQL语句");
}
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
int paramCount = stmt.getParameterMetaData().getParameterCount();
if (paramCount != params.length) {
throw new DBException("传入的参数个数和SQL语句中需要的参数个数不匹配");
}
for (int i = 0; i < params.length; ++i) {
stmt.setObject(i + 1, params[i]);
}
try (ResultSet rs = stmt.executeQuery()) {
return handler.handle(rs);
} catch (SQLException e) {
e.printStackTrace();
throw new DBException("处理结果集时发生错误", e);
}
} catch (SQLException e) {
e.printStackTrace();
throw new DBException("创建或执行SQL语句时发生错误", e);
}
}
/**
* 执行更新(包括insert / delete / update)
* @param sql SQL语句
* @param params 替换SQL语句中占位符的参数
* @return 受影响的行数
*/
public int update(String sql, Object... params) {
if (sql == null) {
throw new DBException("没有指定要执行的SQL语句");
}
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
int paramCount = stmt.getParameterMetaData().getParameterCount();
if (paramCount != params.length) {
throw new DBException("传入的参数个数和SQL语句中需要的参数个数不匹配");
}
for (int i = 0; i < params.length; ++i) {
stmt.setObject(i + 1, params[i]);
}
return stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw new DBException("执行SQL语句时发生错误", e);
}
}
/**
* 开启数据库会话
*/
public void open() {
if (conn == null) {
conn = DBUtil.openConnection();
}
}
/**
* 关闭数据库会话
*/
public void close() {
DBUtil.closeConnection(conn);
conn = null;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
hello (3).rar (78个子文件)
hello
WebContent
css
signin.css 931B
style.css 3KB
diary.jsp 3KB
images
musicBtn.png 2KB
745b7556f2f8a6e01aba060095a19380.jpg 10KB
6.jpg 926KB
5.jpg 571KB
musicBtnOff.png 2KB
web_login_bg.jpg 41KB
timg2.jpeg 53KB
7.jpg 716KB
META-INF
MANIFEST.MF 39B
mp3
fb1df59a76bf73bb5c8cdabda51e7df2.mp3 7.19MB
成都.mp3 7.76MB
WEB-INF
lib
mysql-connector-java-5.1.40-bin.jar 968KB
commons-codec-1.10.jar 278KB
jstl-1.2.jar 405KB
js
tour_date.js 768B
tour_music.js 358B
jquery-3.1.1.min.js 85KB
login.jsp 2KB
register.jsp 2KB
tologin.jsp 295B
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 345B
org.eclipse.wst.common.component 467B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 567B
org.eclipse.jdt.core.prefs 364B
src
com
qfedu
persistence
UserDao.java 258B
MessageDao.java 231B
impl
MessageDaoDbImpl.java 2KB
UserDaoDbImpl.java 1023B
filter
CharacterEncodingFilter.java 621B
TxFilter.java 843B
domain
User.java 790B
PageModel.java 1KB
Message.java 1KB
controller
PubMessageServlet.java 2KB
RegisterServlet.java 1KB
LoginServlet.java 1014B
ShowDiaryServlet.java 1KB
service
UserService.java 265B
impl
UserServiceImpl.java 1KB
MessageServiceImpl.java 500B
MessageService.java 202B
util
DBSessionFactory.java 780B
CommonUtil.java 1KB
ResultSetHandler.java 333B
DBSession.java 3KB
DBUtil.java 1KB
DBException.java 314B
.project 905B
create_and_init.sql 3KB
.classpath 842B
build
classes
com
qfedu
persistence
MessageDao.class 309B
UserDao.class 232B
impl
MessageDaoDbImpl.class 4KB
UserDaoDbImpl.class 2KB
filter
CharacterEncodingFilter.class 1KB
TxFilter.class 2KB
domain
User.class 1KB
PageModel.class 2KB
Message.class 2KB
controller
PubMessageServlet.class 4KB
LoginServlet.class 2KB
ShowDiaryServlet.class 2KB
RegisterServlet.class 2KB
service
UserService.class 284B
MessageService.class 273B
impl
MessageServiceImpl.class 811B
UserServiceImpl.class 2KB
util
ResultSetHandler.class 361B
DBUtil.class 2KB
DBSession.class 4KB
CommonUtil.class 2KB
DBSessionFactory.class 1KB
DBException.class 536B
共 78 条
- 1
资源评论
Leaf_And_Wind
- 粉丝: 2
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功