java 二维表_讲述对数据库中二维表格的操作![原创][struts框架]

这篇博客展示了如何使用Java从数据库中查询二维表格数据,包括课程和教师的数量,以及教师授课的情况。通过Struts框架,将数据传递到前端页面进行展示。文章详细解释了数据库查询过程和Struts配置文件的使用。
摘要由CSDN通过智能技术生成

package org.shine.action;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.Statement;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.sql.DataSource;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

public class QueryTeach extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

ServletContext context =servlet.getServletContext();

DataSource source = (DataSource)context.getAttribute("SQLServer2k");

Connection cn = source.getConnection();//从数据库连接池中取得数据源

Statement st = cn.createStatement(); //实例一个statement对象用于执行查询语句

int i = 0;

int j = 0;

int iCourseCount = 0; //用于统计课程记录行数

int iTeacherCount = 0; //用于统计教师数量记录行数

String strSql = "select sum(1) from Course"; //查询出所有的课程的记录集行数

ResultSet rs = st.executeQuery(strSql);

while(rs.next()){

iCourseCount = rs.getInt(1); //统计课程的行数

}

String[] cName = new String[iCourseCount];

rs.close();//关闭记录集

strSql = "select cName from Course";

rs = st.executeQuery(strSql);

//使用ResultSet对象得到statement返回的记录集

while(rs.next()){

cName = rs.getString(1); //将取得到的课程名保存于cName这个字符数组中

i++;

}

i = 0; //复位计数器

strSql = "select sum(1) from teacher"; //记录集返回统计的老师的人数

rs = st.executeQuery(strSql); //执行查询返回结果集

while(rs.next()){

iTeacherCount = rs.getInt(1); //得到记录集的字段,即返回此记录集的行数

}

rs.close(); //关闭记录集

String tName[] = new String[iTeacherCount]; //定义一个字符串数组,长度为老师的人数,即用于保存老师的姓名

strSql = "select tName from teacher";

rs = st.executeQuery(strSql);

while(rs.next()){

tName = rs.getString(1);

i++;

}

rs.close(); //关闭记录集

int[][] nResult = new int[iTeacherCount][iCourseCount];//设置一个二维数组反映具体教师授课情况

for(i = 0;i < iTeacherCount;i++){

for(j = 0;j

strSql = "select cName from Course c,Teach tc,Teacher t where c.CID = tc.CID and t.TID = tc.TID and tName = '"+tName+"' and cName='"+cName[j]+"'";

rs = st.executeQuery(strSql);

if(rs.next()){ //查询如果有结果则表明教师和课程相交的那行的结果,是存在关系,即授课关系,则作上标记;否则不存在关系

nResult[j] = 1; //存在授课标记为1

}

else{

nResult[j] = 0; //存在授课标记为0

}

}

}

request.setAttribute("cName",cName); //将所有课程发送至前台

request.setAttribute("tName",tName); //将所有教师发送至前台

request.setAttribute("nResult",nResult);//将教师授课内容发送至前台

cn.close(); //关闭数据库连接

return mapping.findForward("ResultPage"); //跳转至XML里设置的前台JSP页面.详细见struts-config.xml里global-forwards的设置

}

}

/*这是struts-config.xml*/

authors.jsp

/*接受后台传来的数据,即课程名称,教师姓名,授课关系*/

String[] cName = (String[])request.getAttribute("cName");

String[] tName = (String[])request.getAttribute("tName");

int[][] nResult = (int[][])request.getAttribute("nResult");

/*定义累加器变量, 即i ,j*/

int i = 0;

int j = 0;

%>

for(i = 0;i <= tName.length;i++){

%>

for(j = 0;j <= cName.length;j++){

if(i == 0 && j == 0){

//左上角角标

%>

教师姓名\课程内容

}

if(i == 0 && j != 0){

//cName[j];读出课程名称

%>

}

if(j == 0 && i != 0){

//tName; //读出所有老师姓名

%>

}

if(i != 0 && j != 0){

if(nResult[i-1][j-1]==1){

//打印√

%>

}

else{

%>

}

}

}%>

}

%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值