package com.chongchong.res;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;
import java.util.List;
public class JdbcTemplate {
// 连接数据库资源
private String driverType = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=WormNet";
private String user = "sa";
private String password = "salmon";
// sql 处理的对象
private Connection conn = null;
private Statement st = null;
private ResultSet rs = null;
private PreparedStatement ps = null;
private CallableStatement cs = null;
/**
* 无参数的构造方法
*/
public JdbcTemplate() {
}
/**
* 有参数的构造方法
*/
public JdbcTemplate(String driverType, String url, String user,
String password) {
this.driverType = driverType;
this.url = url;
this.user = user;
this.password = password;
}
/**
* 通过参数得到连接
*/
private void getConnection() {
try {
Class.forName(driverType);
conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 通过连接,得到通道
*/
private void getStatement() {
getConnection();
try {
st = conn.createStatement();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
/**
* 通过连接得到预状态通道
*/
private void getPreparedStatement(String sql) {
this.getConnection();
try {
ps = conn.prepareStatement(sql);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
/**
* 通过连接得到存储过程通道
*/
private void getCallableStatement(String callsql) {
this.getConnection();
try {
cs = conn.prepareCall(callsql);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
/**
* 状态通道下的数据操作
*
* @param sql
* String
* @return boolean
*/
public boolean execOperate(String sql) {
int count = -1;
getStatement();
try {
count = st.executeUpdate(sql);
this.runCommit();
} catch (SQLException ex) {
ex.printStackTrace();
this.runRollback();
} finally {
this.colseResource();
}
return count >= 0 ? true : false;
}
/**
* 状态通道下的查询操作
*
* @param sql
* String
* @return ResultSet
*/
public ResultSet execQuery(String sql) {
this.getStatement();
try {
rs = st.executeQuery(sql);
return rs;
} catch (SQLException ex) {
ex.printStackTrace();
}
return null;
}
/**
* 状态通道下的批处理操作
*
* @param sqls
* List
* @return boolean
*/
public boolean execBatch(List sqls) {
boolean isCorrect = false;
this.getStatement();
try {
this.operateCols(sqls);
st.executeBatch();
this.runCommit();
isCorrect = true;
} catch (SQLException ex) {
ex.printStackTrace();
this.runRollback();
} finally {
this.colseResource();
}
return isCorrect;
}
private void operateCols(List args) throws SQLException {
if (args != null && args.size() > 0) {
for (Iterator iter = args.iterator(); iter.hasNext();) {
st.addBatch(iter.next().toString());
}
}
}
/**
* 预通道下的查询操作
*
* @param sql
* String
* @param args
* String[]
* @return ResultSet ex:select * from dept where deptname = ? and deptnum=?
* String[] args = new String[]{"行政部","20"}
*/
public ResultSet execQuery(String sql, String[] args) {
this.getPreparedStatement(sql);
try {
this.operateParm(args);
rs = ps.executeQuery();
return rs;
} catch (SQLException ex) {
ex.printStackTrace();
}
return null;
}
/**
*
* @param sql
* String
* @param args
* String[]
* @return boolean ex: insert into dept values(?,?,?,?) String[] args = new
* String[]{"50","行政部","20","行政部相关"}
*/
public boolean execOperate(String sql, String[] args) {
boolean isCorrect = false;
this.getPreparedStatement(sql);
try {
this.operateParm(args);
ps.executeUpdate();
this.runCommit();
isCorrect = true;
} catch (SQLException ex) {
ex.printStackTrace();
this.runRollback();
} finally {
this.colseResource();
}
return isCorrect;
}
private void operateParm(String[] args) throws SQLException {
if (args != null && args.length > 0) {
for (int i = 0; i < args.length; i++) {
ps.setString(i + 1, args[i]); // 通过数组传递的值与与问号一一绑定
}
}
}
/**
* 预备通道下的批处理操作
*
* @param sql
* String
* @param args
* String[][] 外层控制操作数量,内层控制参数的绑定
* @return boolean
*/
public boolean doBatch(String sql, String[][] args) {
boolean isCorrect = false;
this.getPreparedStatement(sql);
try {
for (int i = 0; i < args.length; i++) {
for (int j = 0; j < args[i].length; j++) {
ps.setString(j + 1, args[i][j]);
}
ps.addBatch();
}
ps.executeBatch();
this.runCommit();
isCorrect = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
this.colseResource();
}
return isCorrect;
}
/**
* 存储过程通道下操作查询
*
* @param callsql
* String {call name(?,?...)}
* @param args
* String[] 传递的参数要与问号一一绑定
* @return ResultSet
*
*/
public ResultSet callQuery(String callsql, String[] args) {
this.getCallableStatement(callsql);
try {
this.operateargs(args);
rs = cs.executeQuery();
return rs;
} catch (SQLException ex) {
ex.printStackTrace();
}
return null;
}
/**
* 存储过程通道下数据操作
*
* @param callsql
* String {call name(?,?...)}
* @param args
* String[] 传递的参数要与问号一一绑定
* @return boolean
*/
public boolean callOperate(String callsql, String[] args) {
this.getCallableStatement(callsql);
int count = -1;
try {
this.operateargs(args);
count = cs.executeUpdate();
this.runCommit();
} catch (SQLException ex) {
ex.printStackTrace();
this.runRollback();
} finally {
this.colseResource();
}
return count >= 0 ? true : false;
}
private void operateargs(String[] args) throws SQLException {
if (args != null && args.length > 0) {
for (int i = 0; i < args.length; i++) {
cs.setString(i + 1, args[i]);
}
}
}
/**
* 聚合函数语句执行方法
*
* @param sql
* String 只能聚合函数语句
* @return String
*/
public String functionOperate(String sql) {
rs = this.execQuery(sql);
String value = "";
try {
if (rs.next()) {
value = rs.getString(1);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
this.colseResource();
}
return value;
}
/**
* primaryKeyautoValue 得到主键
*
* @return int
*/
public int primaryKeyautoValue(String sql) {
if(functionOperate(sql)!=null){
return Integer.parseInt(functionOperate(sql)) + 5;
}else{
return 1;
}
}
/**
* 得到数据库的元数据
*/
public DatabaseMetaData getDatabaseMetaData() throws SQLException {
return conn.getMetaData();
}
/**
* 得到结果集的元数据
*/
/**
* 提交事务
*/
private void runCommit() {
try {
conn.commit();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
/**
* 回滚事务
*/
private void runRollback() {
try {
conn.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
/**
* 关闭资源
*/
public void colseResource() {
try {
if (rs != null)
rs.close();
if (st != null)
没有合适的资源?快使用搜索试试~ 我知道了~
图书网站系统,纯java开发
共348个文件
jpg:139个
class:70个
jsp:45个
2星 需积分: 3 5 下载量 162 浏览量
2011-05-19
21:44:30
上传
评论 1
收藏 7.47MB RAR 举报
温馨提示
这是一个小型销售图书网站系统,附带前后台
资源推荐
资源详情
资源评论
收起资源包目录
图书网站系统,纯java开发 (348个子文件)
JdbcTemplate.class 7KB
JdbcTemplate.class 7KB
AdminDao.class 3KB
CarShopServlet.class 3KB
BookService.class 3KB
AddBookServlet.class 3KB
OrderServlet.class 3KB
FenYeServlet.class 3KB
ZhuYeServlet.class 3KB
InsertAdminServlet.class 3KB
InsertAdminServlet.class 3KB
QuerybookServlet.class 3KB
SelectAdminServlet.class 3KB
AddBookDao.class 3KB
Userinfo.class 3KB
ZongHengServlet.class 3KB
InsertMessage.class 2KB
Userinfo.class 2KB
UpdateOrderServlet.class 2KB
UpdateAdminServlet.class 2KB
AdminDao.class 2KB
SelectBook.class 2KB
DeleteAdminServlet.class 2KB
UserServlet.class 2KB
UpdateBook_infoServlet.class 2KB
FenYeService.class 2KB
MessageDao.class 2KB
Bookinfo.class 2KB
Bookinfo.class 2KB
Book.class 2KB
Message.class 2KB
LoginServlet.class 2KB
FenYeService.class 2KB
Order.class 2KB
WareDao.class 2KB
WareShopServlet.class 2KB
Order.class 2KB
DeleteBookServlet.class 2KB
BookinfoDao.class 2KB
BookinfoDao.class 2KB
OrderDao.class 2KB
FenYeDao.class 2KB
UserinfoDao.class 2KB
UserinfoDao.class 2KB
UserDao.class 2KB
LandServlet.class 2KB
FenYeDao.class 1KB
Message.class 1KB
Car.class 1KB
LoginDao.class 1KB
Admin.class 1KB
Admin.class 1KB
Ordersum.class 1KB
Ordersum.class 1KB
Collection.class 1KB
Collection.class 1KB
WareShop.class 1KB
BookDao.class 1010B
Publish.class 921B
Publish.class 921B
Part.class 894B
Part.class 894B
WareService.class 854B
BaseDao.class 414B
BaseDao.class 404B
AA.class 287B
AA.class 277B
AA.class 277B
AA.class 273B
AA.class 269B
.classpath 447B
Thumbs.db 186KB
Thumbs.db 100KB
Thumbs.db 68KB
Thumbs.db 59KB
Thumbs.db 55KB
Thumbs.db 55KB
Thumbs.db 43KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 15KB
Thumbs.db 15KB
Thumbs.db 5KB
Thumbs.db 5KB
Thumbs.db 5KB
indextop.gif 189KB
welcome.gif 101KB
welcome.gif 101KB
welcome1.gif 67KB
adv.gif 52KB
banner.gif 30KB
img_lt5.gif 30KB
banner.gif 30KB
banner.gif 30KB
banner.gif 30KB
crm_12.gif 12KB
crm_12.gif 12KB
top_photo.gif 6KB
image.gif 5KB
共 348 条
- 1
- 2
- 3
- 4
资源评论
- zhuangsong5212012-09-03没有用,sql也没有
- airsfly2013-11-26只能说非常一般!!
tang_tang_yu
- 粉丝: 6
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功