作用:1.Java连接Oracle数据库 2.关闭连接 3.提供查询方法 4.提供增删改方法
1 BaseDao 2 package dao; 3 import java.sql.*; 4 5 /** 6 * @author 数据库操作基类 7 */ 8 public class BaseDao { 9 public final static String DRIVER = "oracle.jdbc.driver.OracleDriver"; // 数据库驱动 10 11 public final static String URL = "jdbc:oracle:thin:@Perston-PC:1521:myhr"; // url 12 13 public final static String DBNAME = "system"; // 数据库用户名 14 15 public final static String DBPASS = "myhr"; // 数据库密码 16 17 /** 18 * 得到数据库连接 19 * 20 * @throws ClassNotFoundException 21 * @throws SQLException 22 * @return 数据库连接 23 */ 24 public Connection getConn() throws ClassNotFoundException, SQLException { 25 Connection conn = null; 26 try { 27 Class.forName(DRIVER); // 注册驱动 28 conn = DriverManager.getConnection(URL, DBNAME, DBPASS); // 获得数据库连接 29 } catch (SQLException e) { 30 e.printStackTrace(); 31 } 32 return conn; // 返回连接 33 } 34 35 /** 36 * 释放资源 37 * 38 * @param conn 39 * 数据库连接 40 * @param pstmt 41 * PreparedStatement对象 42 * @param rs 43 * 结果集 44 */ 45 public void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) { 46 47 /* 如果rs不空,关闭rs */ 48 if (rs != null) { 49 try { 50 rs.close(); 51 } catch (SQLException e) { 52 e.printStackTrace(); 53 } 54 } 55 /* 如果pstmt不空,关闭pstmt */ 56 if (pstmt != null) { 57 try { 58 pstmt.close(); 59 } catch (SQLException e) { 60 e.printStackTrace(); 61 } 62 } 63 /* 如果conn不空,关闭conn */ 64 if (conn != null) { 65 try { 66 conn.close(); 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 } 70 } 71 72 } 73 74 /** 75 * 执行SQL语句,可以执行查询 76 * 77 * @param sql 78 * 预编译的 SQL 语句 79 * @param param 80 * 预编译的 SQL 语句中的‘?’参数的字符串数组 81 * @return 影响的条数 82 */ 83 public ResultSet executeQuerySQL(String preparedSql, String[] param) { 84 Connection conn = null; 85 PreparedStatement pstmt = null; 86 ResultSet rs = null; 87 // int num = 0; 88 89 /* 处理SQL,执行SQL */ 90 try { 91 conn = getConn(); // 得到数据库连接 92 pstmt = conn.prepareStatement(preparedSql); // 得到PreparedStatement对象 93 if (param != null) { 94 for (int i = 0; i < param.length; i++) { 95 pstmt.setString(i + 1, param[i]); // 为预编译sql设置参数 96 } 97 } 98 rs = pstmt.executeQuery(); // 执行SQL语句 99 } catch (ClassNotFoundException e) {100 e.printStackTrace(); // 处理ClassNotFoundException异常101 } catch (SQLException e) {102 e.printStackTrace(); // 处理SQLException异常103 }104 return rs;105 }106 107 /**108 * 执行SQL语句,可以进行增、删、改的操作,不能执行查询109 * 110 * @param sql111 * 预编译的 SQL 语句112 * @param param113 * 预编译的 SQL 语句中的‘?’参数的字符串数组114 * @return 影响的条数115 */116 public int executeSQL(String preparedSql, Object[] param) {117 Connection conn = null;118 PreparedStatement pstmt = null;119 int num = 0;120 121 /* 处理SQL,执行SQL */122 try {123 conn = getConn(); // 得到数据库连接124 pstmt = conn.prepareStatement(preparedSql); // 得到PreparedStatement对象125 if (param != null) {126 for (int i = 0; i < param.length; i++) {127 pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数128 }129 }130 // System.out.println(preparedSql);131 num = pstmt.executeUpdate(); // 执行SQL语句132 } catch (ClassNotFoundException e) {133 e.printStackTrace(); // 处理ClassNotFoundException异常134 } catch (SQLException e) {135 e.printStackTrace(); // 处理SQLException异常136 } finally {137 this.closeAll(conn, pstmt, null);138 }139 return num;140 }141 }142 /**143 * 执行SQL语句,可以执行查询144 * 145 * @param sql146 * 预编译的 SQL 语句147 * @param param148 * 预编译的 SQL 语句中的‘?’参数的字符串数组149 * @return 影响的条数150 */151 public ResultSet executeQuerySQL(String preparedSql, Object[] param) {152 Connection conn = null;153 PreparedStatement pstmt = null;154 ResultSet rs = null;155 // int num = 0;156 157 /* 处理SQL,执行SQL */158 try {159 conn = getCon(); // 得到数据库连接160 pstmt = conn.prepareStatement(preparedSql); // 得到PreparedStatement对象161 if (param != null) {162 for (int i = 0; i < param.length; i++) {163 pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数164 }165 }166 rs = pstmt.executeQuery(); // 执行SQL语句167 } catch (SQLException e) {168 e.printStackTrace(); // 处理SQLException异常169 }170 return rs;171 }172 173 /**174 * 执行SQL语句,可以进行增、删、改的操作,不能执行查询175 * 176 * @param sql177 * 预编译的 SQL 语句178 * @param param179 * 预编译的 SQL 语句中的‘?’参数的字符串数组180 * @return 影响的条数181 */182 public int executeSQL(String preparedSql, Object[] param) {183 Connection conn = null;184 PreparedStatement pstmt = null;185 int num = 0;186 187 /* 处理SQL,执行SQL */188 try {189 conn = getCon(); // 得到数据库连接190 pstmt = conn.prepareStatement(preparedSql); // 得到PreparedStatement对象191 if (param != null) {192 for (int i = 0; i < param.length; i++) {193 pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数194 }195 }196 // System.out.println(preparedSql);197 num = pstmt.executeUpdate(); // 执行SQL语句198 }catch (SQLException e) {199 e.printStackTrace(); // 处理SQLException异常200 } finally {201 this.closeAll(conn, pstmt, null);202 }203 return num;204 }