可以方便的将SQL语句的执行结果显示成表格结果的JAVA类,可以用于不同的数据显示...
说明:
在做网络程序的时候,我们总是需要将数据从数据库里面读出来,并将其显示,如果每次都去写,那就有点麻烦,程序员最讨厌的事就是做无用的重复功,至少我是其中的一员,在一个项目中做了一个这个东东,感觉用起来还是很方便的,
这是一个通用的将查询结果显示成表格的类,你想显示多少,你只需要在你的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.****.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 class GetSearchResultByTableFormat {
public GetSearchResultByTableFormat() {
conn_init();
}
Connection conn;
Statement st;
int currentPage; //当前页号
int pageSize; //每页显示记录条数
int totalPage; //总共页数
int previousPage; //前一页页号
int nextPage; //下一页页号
int columnCount; //总共列数
int totalRecord; //总记录数
String tableTitle; //大标题,这个的下面才是显示的内容
String editUrl; //编辑页面的URL
String delUrl; //删除页面的URL
String viewUrl; //查看指定记录URL
String currentPageUrl;
boolean verify = false; //是否当前记录验证
String verifyURL; //记录的验证地址
/******************************初使化数据库链接******************************/
private void conn_init() {
setConnection();
setStatement();
}
private 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();
}
}
private 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; //起始记录