打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
oracle数据库:jdbc通用sql分页封装
    
    
    
/**
     * 查询结果的总数,常用的地方就是查询分页时的总记录数
     * 
@param sql:原始sql语句!
     * 
@return 查询结果的总数
     * 
@throws SQLException
     
*/
    
    
public int getsqlcount(String sql) throws SQLException{
        DataBase db 
= new DataBase();
        
this.con = db.getCon();
        String nsql 
= "select count(*) from (" + sql + ")";
        System.out.println(
"查询总数的SQL:--->"+nsql);
        
try {
            st 
= con.createStatement();
            rs 
= st.executeQuery(nsql);
            
if (rs.next()) {
                
return rs.getInt(1);
            } 
else {
                
return 0;
            }
        } 
catch (SQLException e) {
            System.out.println(
"执行查询总数sql异常,不能执行!");
            
throw new SQLException(e.toString());
        } 
finally {
            
try {
                
if(con!=null)
                    con.close();
                
if(st!=null)
                    st.close();
                
if(rs!=null)
                    rs.close();
                System.out.println(
"siyu--getsqlcount-->关闭连接成功!");
            } 
catch (Exception e) {
                e.printStackTrace();
                System.out.println(
"关闭数据连接有误!!");
            }
        }
    }

    
/**
     * 查找分页的sql语句的数据
     * 
@param sql 原始sql语句!
     * 
@param currentpage 当前页
     * 
@param pagesize 每页大小
     * 
@return 返回满足该条件的结果集,以List<String[]> 形式返回
     
*/
    
public List<String[]> getsqllistset(String sql, int currentpage, int pagesize) throws SQLException {
        
if (currentpage <= 0) {
            currentpage 
= 1;
        }
        
if (pagesize < 1 || pagesize > 100) {
            pagesize 
= 10;
        }
        
int startrow = (currentpage - 1* pagesize;
        String nsql 
= "select * from (select a.*, rownum r from (" + sql + ") a where rownum <= " + (startrow + pagesize) + ") where r > " + startrow;
        System.out.println(
"分页sql语句:" + nsql);
        
try {
            DataBase db 
= new DataBase();
            
this.con = db.getCon();
            st 
= con.createStatement();
            rs 
= st.executeQuery(nsql);
            ResultSetMetaData rsmd 
= rs.getMetaData();
            
int numberOfColumns = rsmd.getColumnCount();
            System.out.println(numberOfColumns);
            List
<String[]> list = new ArrayList<String[]>();
            
while (rs.next()) {
                String[] str 
= new String[numberOfColumns - 1];
                
for (int r = 1; r < numberOfColumns; r++) {
                    str[r 
- 1= rs.getString(r);
                }
                list.add(str);
            }
            
return list;
        } 
catch (SQLException e) {
            e.printStackTrace();
            System.out.println(
"执行查询总数sql异常,不能执行!");
            
throw new SQLException(e);
        } 
catch (Exception e) {
            e.printStackTrace();
            System.out.println(
"查询数据结果异常,不能执行!");
            
return null;
        }
        
finally {
            
try {
                
if(con!=null)
                    con.close();
                
if(st!=null)
                    st.close();
                
if(rs!=null)
                    rs.close();
                System.out.println(
"siyu--getsqllistset-->关闭连接成功!");
            } 
catch (Exception e) {
                System.out.println(
"关闭数据连接有误!!");
            }
        }
    }

    
    
/**
     * 查找分页的sql语句的数据
     * 
@param sql 原始sql语句!
     * 
@param currentpage 当前页
     * 
@param pagesize 每页大小
     * 
@return 返回满足该条件的结果集,以List<<Map<String,Object>> 形式返回
     
*/
    
public List<Map<String,Object>> getsqlmapset(String sql, int currentpage,int pagesize) throws SQLException {
        
if (currentpage <= 0) {
            currentpage 
= 1;
        }
        
if (pagesize < 1 || pagesize > 100) {
            pagesize 
= 10;
        }
        
int startrow = (currentpage - 1* pagesize;
        String nsql 
= "select * from (select a.*, rownum r from (" + sql + ") a where rownum <= " + (startrow + pagesize) + ") where r > " + startrow;
        System.out.println(
"分页sql语句:" + nsql);
        
try {
            DataBase db 
= new DataBase();
            
this.con = db.getCon();
            st 
= con.createStatement();
            rs 
= st.executeQuery(nsql);
            List
<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
            ResultSetMetaData rsmd 
= rs.getMetaData();
            
int numberOfColumns = rsmd.getColumnCount();
            
while (rs.next()) {
                Map
<String,Object> rsTree = new HashMap<String, Object>(numberOfColumns);
                
for (int r = 1; r < numberOfColumns; r++) {
                    rsTree.put(rsmd.getColumnName(r), rs.getObject(r));
                }
                list.add(rsTree);
            }
            
return list;
        } 
catch (SQLException e) {
            e.printStackTrace();
            System.out.println(
"执行查询总数sql异常,不能执行!");
            
throw new SQLException(e);
        } 
catch (Exception e) {
            e.printStackTrace();
            System.out.println(
"查询数据结果异常,不能执行!");
            
return null;
        }
        
finally {
            
try {
                
if(con!=null)
                    con.close();
                
if(st!=null)
                    st.close();
                
if(rs!=null)
                    rs.close();
                System.out.println(
"siyu--getsqlmapset-->关闭连接成功!");
            } 
catch (Exception e) {
                System.out.println(
"关闭数据连接有误!!");
            }
        }
    }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JDBC 学习笔记(一)
jsp 分页 oracle数据库
java 通过调用JDBC连接Oracle;执行SQL*PlUS 导入sql脚本
使用JDBC访问SQLServer 2005
EXCEL导入数据库及数据库数据导出到EXCEL - @家军-天行键,君子以自强不息! -...
Jsp Servlet JavaBean JDBC登陆实例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服