实训的时候用到了数据库的存储进程。这里记录下吧,把自己的经历慢慢写下来也是一件不错的事。
首先是连接数据库的类ConnDB.java中操作存储进程的函数
/**
* @Param procedure name
*@return theResultSet(一般是不建议返回ResultSet的,实训追求方便就直接弄了....)
*/
public ResultSet exeSqlQueryProc(String proc) {
try {
cStatement=dbConn.prepareCall("CALL "+proc +";",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
resultSet=cStatement.executeQuery();
} catch (Exception ex) {
//打印出异常信息
System.err.println("DAO.DBBean.executeQuery() ERR :"+ex.getMessage());
resultSet = null;
}
return resultSet;
}
然后是处理站点-线路的类LineToStation.java类的处理(继承自ConnDB.java)
public ResultSet directStation(String startStation,String endStation ){
proc="dirStation('"+startStation+"','"+endStation+"')";
ResultSet resultSet = null;
try {
resultSet = super.exeSqlQueryProc(proc);
} catch (Exception ex) {
System.out.println(ex.toString());
} finally {
if (rs != null) { rs.close(); }
if (stmt != null) {stmt.close(); }
if (dbcon != null) { dbcon.close(); }
}
return resultSet;
}
最后是JSP页面中进行使用
...
<%
String start = request.getParameter("stationName1");
String end = request.getParameter("stationName2");
ResultSet resultSet1 = lts.directStation(start,end);//注:lts是引用的JavaBean名字
if (resultSet1.next()) {
out.println("<center>直达</center>");
out.println("<thead><tr>");
out.println("<th style='padding:5px;' align='center'>起始站点</th>");
out.println("<th style='padding:5px;' align='center'>目的站点</th>");
out.println("<th style='padding:5px;' align='center'>乘坐线路</th>");
out.println("</tr></thead>");
resultSet1.previous();
while (resultSet1.next()) {
// String busline = resultSet.getString(1);
%>
<tr>
<td style="padding:5px;" align="center"><%=resultSet1.getString(1)%></td>
<td style="padding:5px;" align="center"><%=resultSet1.getString(2)%></td>
<td style="padding:5px;" align="center"><%=resultSet1.getString(3)%></td>
</tr>
<% }
}
%>
...
到此就完毕了。。。