关于JSP中SQL语句值在页面中的显示问题。
在连接数据库执行完sql语句后,要把查询的值在JSP 页面中显示出来。但是出现当查询语句出现表与表之间属性关联的就无法在页面中显示查询结果。
比如简单对单个表进行查询输出。如下面的可以在网页中正常显示:
<%String dbDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";String dbURL="jdbc:sqlserver://localhost:1433;databaseName=classroom;user=sa;password=19881206";Connection conn = null;Statement stmt= null;String sql = null;ResultSet rs = null;String str=request.getParameter("CRno"); try{ Class.forName(dbDriver); conn=DriverManager.getConnection(dbURL); stmt=conn.createStatement(); sql="SELECT CRno,Capacity FROM classroom where classroom.CRno='"+str+"'"; rs=stmt.executeQuery(sql); %> <center> <table border=2> <caption>教室信息</caption> <tr> <th>教室编号</th><th>教室容量</th> </tr> <%while(rs.next()){ %> <tr> <td><%=rs.getString("CRno")%></td> <td><%=rs.getString("Capacity")%></td> </tr> <%} conn.close(); } catch(SQLException e) {System.out.println(e); } %><% String dbDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dbURL="jdbc:sqlserver://localhost:1433;databaseName=classroom;user=sa;password=19881206"; Connection conn = null; Statement stmt= null; String sql = null; ResultSet rs=null; String str; str=request.getParameter("Tname"); try{ Class.forName(dbDriver); conn=DriverManager.getConnection(dbURL); stmt=conn.createStatement(); sql="select Tname,Deptname,Ttitle,Cname,CRno,Weekday,Period from teacher,teach_course,course,dept where teacher.Tno=teach_course.Tno and teacher.Deptno=dept.Deptno and teach_course.Cno=course.Cno and teacher.Tname='"+str+"'"; rs=stmt.executeQuery(sql); %> <center> <table border=2> <caption>教师开课信息</caption> <tr><th>教师姓名</th><th>所属院系</th><th>职称</th><th>课程名</th><th>上课地点<th>上课时间</th><th>节次</th> </tr> <%while(rs.next()) {%> <tr> <td><%=rs.getString("Tname")%></td> <td><%=rs.getString("Deptname")%></td> <td><%=rs.getString("Ttitle")%></td> <td><%=rs.getString("Cname")%></td> <td><%=rs.getString("CRno")%></td> <td><%=rs.getString("Weekday")%></td> <td><%=rs.getString("Period")%></td> </tr> <%} conn.close(); }catch(SQLException e) { System.out.println(e); } %>
<td><%=rs.getString("Weekday")%></td>
<td><%=rs.getString("Period")%></td>
确定这些字段名和数据库里的一致?
一般不建议在jsp中写这么多java代码
[解决办法]
<%=rs.getString("Tname")%></td>
<td><%=rs.getString("Deptname")%></td>
<td><%=rs.getString("Ttitle")%></td>
<td><%=rs.getString("Cname")%></td>
<td><%=rs.getString("CRno")%></td>
<td><%=rs.getString("Weekday")%></td>
<td><%=rs.getString("Period")%></td>
确定这些字段名和数据库里的一致?
[解决办法]
建议 写一个servlet 在写一个bean
bean对数据库操作 返回结果集然后在转为实体类在添加进List或其他 中如:类.set...();
在servlet对bean进行调用 把返回的List集合(里面存放着实体类对象 从数据库查询的到) 用request.setAttribute("",);的形式传到jsp页面 在jsp页面判断后 输出即可...
[解决办法]
select Tname,Deptname,Ttitle,Cname,CRno,Weekday,Period from teacher,teach_course,course,dept where teacher.Tno=teach_course.Tno and teacher.Deptno=dept.Deptno and teach_course.Cno=course.Cno and teacher.Tname='"+str+"'";
这个SQL你确定没问题吗?str的值是否正确?
如果是正确的,那么没有显示,绝对控制台抛出了异常!
但是你只给出了代码,我无法做判断。
还有,stmt、rs为什么都不关掉,而只关了conn