package dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class BaseDao {
private static String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=StudentManageSys";
private static String USER = "sa";
private static String PWD = "sa";
protected Connection conn = null;
protected PreparedStatement pstmt = null; static {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} protected Connection getConnection() {
try {
return (conn == null || conn.isClosed()) ? DriverManager.getConnection(URL, USER, PWD) : conn;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
} protected void closeAll(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
} protected Object execute(String sql, Object... objs) {
handle(sql, objs);
try {
boolean flag = pstmt.execute();
if (flag) {
return pstmt.getResultSet(); // 查询不必先释放资源
} else {
closeAll(conn, pstmt, null);
return pstmt.getUpdateCount();
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
} private void handle(String sql, Object[] objs) {
conn = getConnection();
try {
pstmt = conn.prepareStatement(sql);
if (objs != null) {
for (int i = 0; i < objs.length; i++) {
pstmt.setObject(i + 1, objs[i]);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

最新文章

  1. Android Weekly Notes Issue #233
  2. chrome 浏览器的预提取资源机制导致的一个请求发送两次的问题以及ClientAbortException异常
  3. C# 获取当前路径方法
  4. bootstrap-tab
  5. MAC: Homebrew(代替yum)安装
  6. ionic 安装本地插件极光推送
  7. GTD时间管理---非行动性
  8. c++标准库
  9. Apache虚拟主机(vhost)配置教程
  10. What does enumerable mean?
  11. js创建对象的几种常用方式小结
  12. PHP jpgraph的一点小提示(附安装方法)
  13. shell查看进程
  14. CSS元素垂直居中方法总结
  15. IM-iOS退出后台接受消息,app退出后台能接收到推送
  16. ruby调用Office Jet引擎压缩access数据库
  17. python实现四则运算和效能分析
  18. Java编程思想 - 并发
  19. cxImage控件使用
  20. [转]Win7与虚拟机VMware下运行的Ubuntu共享文件夹

热门文章

  1. 使用Hybris Commerce User API读取用户信息时,电话字段没有返回
  2. handy源码阅读(六):udp类
  3. 使用IDEA自动生成Java实体类
  4. linux 多进程并发服务__关于子进程回收的方法
  5. RedisTemplate访问Redis数据结构(前言)
  6. codeforces 657C - Bear and Contribution [想法题]
  7. SeaJS基本开发原则
  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_06 Properties集合_1_使用Properties集合存储数据,遍历取出集合中的数据
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_4_练习_递归打印多级目录
  10. 测开之路一百零三:jquery元素和标签的插入与删除