![]() |
|
||||||||||||||
| | 网站首页 | 数据库教程 | web编程 | 服务器 | 程序设计 | | ||
|
||
|
|||||
| 可以方便的将SQL语句的执行结果显示成表格结果的JAVA类,可以用于不同的数据显示 | |||||
作者:佚名 文章来源:不详 点击数: 更新时间:2007-9-2 ![]() |
|||||
|
说明: 在做网络程序的时候,我们总是需要将数据从数据库里面读出来,并将其显示,如果每次都去写,那就有点麻烦,程序员最讨厌的事就是做无用的重复功,至少我是其中的一员,在一个项目中做了一个这个东东,感觉用起来还是很方便的, 这是一个通用的将查询结果显示成表格的类,你想显示多少,你只需要在你的SQL语句里面的控制就可以,可以做到随心所欲了。 主要原理就是根据你的SQL语句,根据rs.getMetaData();及rsmd.getColumnName(j);取得列名,然后再把内容循环读出来就可以了,在读取内容的过程中,加入表格元素控制,然后就可以将取得到的内容转换成表格形式。你可以将我注释了的将英文字段换成中文的函数补充完整,这样你的图上显示就是中段了,我这里就不把那个函数写出来,因为很简单,这里也有这么多的东西了。不过,我附到最后面,以及翻页要用的一个JS函数,都附在最后面。 这是一张运行效果图: ![]() 下面是源代码,有点长,如果你觉得下面的太长了,太难看,你可以到这里下载这个JAVA源文件,这里有一个示例,如下: 示例: /** * 这是一个可以把执行结果返回成表格的形式的类,在JSP页面只需要一个打印语句就可以把结果查询结果 * 打印出来。通用性比较强,不过,性能上面我没有去考虑@——@ * 这里一个简单的示例,不过,要放在JSP页面里面使用: * GetSearchResultByTableFormat get=new GetSearchResultByTableFormat(); * get.setTableTitle("省 核 所 有 的 信 息"); * get.setEditUrl("purchaseInformation_edit.do"); * get.setVerify(true);//把需要通过验证标志设为true * get.setVerifyURL("PassVerify_PurchaseInformation.do"); * String sql="Select * From table"; * //取得当前的页号 * int currentPage; * try{ * currentPage=Integer.parseInt(request.getParameter("page")); }catch(NumberFormatException e) { currentPage=1; try{ currentPage=(Integer)(request.getAttribute("page")); //out.println("当前页:"+currentPage); }catch(Exception e1) { currentPage=1; } } * //取得当前的页号OK * get.setDelUrl("purchaseInformation_del.do?page="+currentPage+"&"); * int pageSize=20; * String pageUrl="purchaseInformation_verify.jsp"; * get.setCurrentPageUrl(pageUrl); * get.setViewUrl("purchaseInformation_View.do"); * //把取得的查询结果打印出来就OK了 * out.println(get.getResult_withTableFormat(sql,currentPage,pageSize,true)); * 上面的操作看起来有点烦,要设置的东西,也比较多,不过,这是从通用性上考虑的,并且多考虑了 * 一些功能,如把编辑、删除、审核等的链接都加上了,如果你只是一个简单的显示的,你可以稍稍更 * 改一些,就成为你需要的了。更改也很简单,把这个方法getExecuteResult_withTableFormat * 改这一下就可以了。 * 欢迎常回家看看:http://blog.csdn.net/fenglibing */ 源代码: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement;
public GetSearchResultByTableFormat() { conn_init(); } Connection conn; Statement st; int currentPage; //当前页号 int pageSize; //每页显示记录条数 int totalPage; //总共页数 int divviousPage; //前一页页号 int nextPage; //下一页页号 int columnCount; //总共列数 int totalRecord; //总记录数 String tableTitle; //大标题,这个的下面才是显示的内容 String editUrl; //编辑页面的URL String delUrl; //删除页面的URL String viewUrl; //查看指定记录URL String currentPageUrl; boolean verify = false; //是否当前记录验证 String verifyURL; //记录的验证地址 /******************************初使化数据库链接******************************/ public void conn_init() { setConnection(); setStatement(); } public void setConnection() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String strurl; strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\Palfinger\\palfinger.mdb"; conn = DriverManager.getConnection(strurl); } catch (Exception e) { e.printStackTrace(); } } public void setStatement() { try { st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); } catch (SQLException e) { e.printStackTrace(); } } /*****************************初使化数据库链接OK*****************************/ /** * * @param sql 执行的SQL语句 * @param CurrentPage 当前页 * @param PageSize 每页显示的记录数 * @return 执行的结果到StringBuffer中 */ public StringBuffer getResult_withTableFormat(String sql, int CurrentPage, int PageSize, boolean withEdit) { int rowNum = 0; //总行数 int TotalPage = 0; //总页数 int beginRow = 0; //起始记录 int endRow = 0; //结束记录 StringBuffer resultRows = new StringBuffer(""); //结果集 this.pageSize = PageSize; //每页大小 try { rowNum = getTotalResultSetNum(sql); //取得总记录数 this.totalRecord = rowNum; //总记录数 //确定当前页 if (rowNum % PageSize == 0) { TotalPage = rowNum / PageSize; } else TotalPage = rowNum / PageSize + 1; if (CurrentPage >= TotalPage) { CurrentPage = TotalPage; nextPage = CurrentPage; nextPage = CurrentPage + 1; //得到下一页页号 } else { nextPage = CurrentPage + 1; //得到下一页页号 } if (CurrentPage <= 1) { CurrentPage = 1; divviousPage = CurrentPage; //得到前一页页号 } else { divviousPage = CurrentPage - 1; //得到前一页页号 } this.currentPage = CurrentPage; //设置当前页 this.totalPage = TotalPage; //设置总页数 beginRow = (CurrentPage - 1) * PageSize + 1; //开始记录 endRow = beginRow + PageSize; //结束记录 resultRows = getExecuteResult_withTableFormat(sql, beginRow, endRow, withEdit); } catch (Exception e) { e.printStackTrace(); } return resultRows; } | |||||