JDBC
package com.bjpowernode.drp.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.ResultSet; //JDBC工具类 public class DbUtil { /* *采用单例模式 取得Connection * @return * */ public static Connection getConnection(){ /* Connection conn=null; try{ Class.forName("oracle.jdbc.driver.OracleDriver"); String url="jdbc:oracle:thin:@localhost:1521:orcl"; String username="wm"; String password="A123456a"; conn=DriverManager.getConnection(url,username,password); }catch(ClassNotFoundException e){ e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); } return conn;*/ Connection conn=null; //数据连接为空 try{ JdbcConfig jdbcConfig=XmlConfigReader.getInstance().getJdbcConfig();//获得数据库配置文件 Class.forName(jdbcConfig.getDriverName());//加载数据库驱动程序 //使用jdbc连接数据库的地址,用户名,密码 conn=DriverManager.getConnection(jdbcConfig.getUrl(),jdbcConfig.getUserName(),jdbcConfig.getPassword()); }catch(ClassNotFoundException e){ e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); } return conn; } //关闭数据库连接 public static void close(Connection conn){ if(conn !=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //关闭数据库程序集 public static void close(ResultSet rs){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //关闭SQL编译集 public static void close(PreparedStatement pstmt){ if(pstmt!=null){ try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } //测试类 public static void main(String[] args){ System.out.println(DbUtil.getConnection()); } }
分页:
/** * 分页查询 * @param pageNo 第几页 * @param pageSize 每页多少条数据 * @return pageModel */ public PageModel findUserList(int pageNo, int pageSize) { StringBuffer sbSql = new StringBuffer(); //定义一个StringBuffer,采用append方法,追加内容到当前StringBuffer的末尾 //拼接的SQL语句 sbSql.append("select user_id, user_name, password, contact_tel, email, create_date ") .append("from ") .append("( ") .append("select rownum rn, user_id, user_name, password, contact_tel, email, create_date ") .append("from ") .append("( ") .append("select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id <> 'root' order by user_id ") .append(") where rownum <= ? ") .append(") where rn > ? "); Connection conn = null; //定义静态的数据库连接 PreparedStatement pstmt = null; //创建预编译SQL语句 ResultSet rs = null; //定义结果集 PageModel pageModel = null; //定义页面信息实体 try { conn = DbUtil.getConnection(); //获取Connection pstmt = conn.prepareStatement(sbSql.toString());//执行SQL语句 pstmt.setInt(1, pageNo * pageSize); //第一个?代表最后一页能包含的所有的条数 pstmt.setInt(2, (pageNo - 1) * pageSize); //第二个?代表倒数第二页包含的所有的条数 //executeQuery返回 //execute,返回boolean值,表名执行该SQL语句是否返回Result //executeUpdate,返回值是一个整数,指示受影响的行数 rs = pstmt.executeQuery();//执行查询 List userList = new ArrayList(); //实例化一个数组 while (rs.next()) { //循环遍历查询结果集 User user = new User(); user.setUserId(rs.getString("user_id")); //用户id进行赋值 user.setUserName(rs.getString("user_name")); //给用户姓名进行赋值 user.setPassword(rs.getString("password")); //给用户密码进行赋值 user.setContactTel(rs.getString("contact_tel")); //给用户电话进行赋值 user.setEmail(rs.getString("email")); //给Email进行赋值 user.setCreateDate(rs.getTimestamp("create_date")); //给创建日期进行赋值 userList.add(user); //像集合列表中添加对象 } pageModel = new PageModel(); //实例化分页实体 pageModel.setList(userList); //给结果集赋值 pageModel.setTotalRecords(getTotalRecords(conn)); //记录数 pageModel.setPageSize(pageSize); //数据条数 pageModel.setPageNo(pageNo); //多少页 }catch(SQLException e) { e.printStackTrace(); }finally { DbUtil.close(rs); //关闭记录集 DbUtil.close(pstmt);//关闭SQL数据集 DbUtil.close(conn); //关闭SQL连接 } return pageModel; //返回分页实体 } /** * 取得总记录数 * @param conn * @return */ /** * 取得总记录数 * @param conn * @return */ private int getTotalRecords(Connection conn) throws SQLException { //查询所有用户id<>root的条数 String sql = "select count(*) from t_user where user_id <> 'root'"; PreparedStatement pstmt = null; //定义SQL预编译集 ResultSet rs = null; //定义记录集 int count = 0; //定义个数 try { pstmt = conn.prepareStatement(sql); //执行SQL语句 rs = pstmt.executeQuery(); //执行查询 rs.next(); //遍历记录集 count = rs.getInt(1); //获取第一列的值 }finally { DbUtil.close(rs); //关闭数据集 DbUtil.close(pstmt);//关闭SQL记录集 } return count; }