包含分页的JDBC工具类
1 包含分页的JDBC工具类 2 包含分页的JDBC工具类 3 package com.shxt.tool; 4 import java.sql.Connection; 5 import java.sql.DriverManager; 6 import java.sql.ParameterMetaData; 7 import java.sql.PreparedStatement; 8 import java.sql.ResultSet; 9 import java.sql.ResultSetMetaData; 10 import java.sql.SQLException; 11 import java.sql.Statement; 12 import java.util.ArrayList; 13 import java.util.HashMap; 14 import java.util.Map; 15 /** 16 * @Author:何云龙 17 * @Version:JDBC封装1.1 2012-11-29 下午06:38:55 18 * @Description:jdbc的封装 19 */ 20 public class DBUtil { 21 private String url = "jdbc:mysql://localhost:3306/sduentdb"; 22 private String userName = "root"; 23 private String passWord = "root"; 24 private Connection conn = null; 25 private Statement st = null; 26 private PreparedStatement ps = null; 27 private ResultSet rs=null; 28 29 30 31 32 33 34 35 36 // 加载驱动,只加载一次即可 37 static { 38 try { 39 // System.out.println("加载驱动正在进行"); 40 Class.forName("com.mysql.jdbc.Driver"); 41 } catch (ClassNotFoundException e) { 42 System.out.println("加载驱动遇到异常"); 43 e.printStackTrace(); 44 } 45 } 46 public Connection getConnection() { 47 // 创建连接 48 try { 49 conn = DriverManager.getConnection(url, userName, passWord); 50 return conn; 51 } catch (SQLException e) { 52 System.out.println("创建连接出现异常!!"); 53 e.printStackTrace(); 54 } 55 return null; 56 } 57 public int update(String sql) { 58 // row是指受影响的行数 59 int row = -1; 60 try { 61 // 当前连接如果是空或者被关闭,需要重新创建一个连接 62 if (conn == null || conn.isClosed()) { 63 conn = getConnection(); 64 } 65 st = conn.createStatement(); 66 row = st.executeUpdate(sql); 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 }finally{ 70 71 //关闭资源 72 release(); 73 } 74 return row; 75 } 76 public int update(String sql, Object[] obj) { 77 int row = -1; 78 // 当前连接如果是空或者被关闭,需要重新创建一个连接 79 try { 80 if (conn == null || conn.isClosed()) { 81 conn = getConnection(); 82 } 83 ps = conn.prepareStatement(sql); 84 // 参数结构数据对象 85 ParameterMetaData pmd = ps.getParameterMetaData(); 86 int varCount = pmd.getParameterCount(); 87 // 给sql语句中的问号?附上值 88 for (int i = 0; i < varCount; i++) { 89 ps.setObject(i + 1, obj[i]); 90 } 91 row = ps.executeUpdate(); 92 } catch (SQLException e) { 93 e.printStackTrace(); 94 }finally{ 95 96 //关闭资源 97 release(); 98 } 99 return row; 100 } 101 public ArrayList<Map<String, Object>> queryToList(String sql) { 102 ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); 103 // 当前连接如果是空或者被关闭,需要重新创建一个连接 104 try { 105 if (conn == null || conn.isClosed()) { 106 conn = getConnection(); 107 } 108 st = conn.createStatement(); 109 rs = st.executeQuery(sql); 110 ResultSetMetaData rsmd = rs.getMetaData(); 111 int col = rsmd.getColumnCount(); 112 113 while (rs.next()) { 114 Map<String, Object> map = new HashMap<String, Object>(); 115 for (int i = 1; i <= col; i++) { 116 map.put(rsmd.getColumnName(i), 117 rs.getObject(rsmd.getColumnName(i))); 118 } 119 list.add(map); 120 121 } 122 // System.out.println(list); 123 return list; 124 125 } catch (Exception e) { 126 e.printStackTrace(); 127 }finally{ 128 129 //关闭资源 130 release(); 131 132 } 133 return null; 134 } 135 136 137 public ArrayList<Map<String, Object>> queryToList(String sql,String[] str) { 138 ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); 139 // 当前连接如果是空或者被关闭,需要重新创建一个连接 140 try { 141 if (conn == null || conn.isClosed()) { 142 conn = getConnection(); 143 } 144 ps = conn.prepareStatement(sql); 145 // 参数结构数据对象 146 ParameterMetaData pmd = ps.getParameterMetaData(); 147 int varCount = pmd.getParameterCount(); 148 // 给sql语句中的问号?附上值 149 for (int i = 0; i < varCount; i++) { 150 ps.setString(i + 1, str[i]); 151 } 152 153 rs = ps.executeQuery(); 154 ResultSetMetaData rsmd = rs.getMetaData(); 155 int col = rsmd.getColumnCount(); 156 while (rs.next()) { 157 Map<String, Object> map = new HashMap<String, Object>(); 158 for (int i = 1; i <= col; i++) { 159 map.put(rsmd.getColumnName(i), 160 rs.getObject(rsmd.getColumnName(i))); 161 } 162 list.add(map); 163 164 } 165 return list; 166 } catch (Exception e) { 167 e.printStackTrace(); 168 }finally{ 169 170 //关闭资源 171 release(); 172 } 173 return null; 174 } 175 176 177 private int pageSize;//页容量 178 private int rowsCount;//总记录数 179 private int start;//开始位置 180 private int end;//结束位置 181 private int pageNow;//当前页 182 public static int pageCount;//总页数 183 184 185 public ArrayList<Map<String, Object>> getPage(int pageSize,int pageNow,String sql){ 186 rowsCount=queryToList(sql).size();//获取到总记录数 187 pageCount=rowsCount%pageSize==0?rowsCount/pageSize:(rowsCount/pageSize+1);//获取到总页数 188 start=pageNow*pageSize-pageSize;//开始位置 189 190 String sqlPage="select * from ("+sql+") as t limit "+start+" , "+pageSize; 191 192 ArrayList<Map<String, Object>> list=queryToList(sqlPage); 193 194 return list; 195 196 } 197 198 199 200 201 202 203 204 205 206 //关闭资源 释放资源 207 public void release(){ 208 209 try { 210 211 if(rs!=null){ 212 rs.close(); 213 } 214 } catch (SQLException e) { 215 e.printStackTrace(); 216 } 217 218 try { 219 if(st!=null){ 220 st.close(); 221 } 222 } catch (SQLException e) { 223 e.printStackTrace(); 224 } 225 try { 226 if(ps!=null){ 227 ps.close(); 228 } 229 } catch (SQLException e) { 230 e.printStackTrace(); 231 } 232 try { 233 if(conn!=null){ 234 conn.close(); 235 } 236 } catch (SQLException e) { 237 e.printStackTrace(); 238 } 239 240 241 242 243 } 244 245 246 }