同样的sql语句在数据库里和jsp页面上的查询结果为什么不一样呢
这是jsp页面
String sql = "select ItemName from DetectItem where id in (1,2)";
ResultSet rs = stmt.executeQuery(sql);
List<DetectItem> list = new ArrayList<DetectItem>();
if(rs.next()){
DetectItem dt = new DetectItem();
dt.setItemName(rs.getString("ItemName"));
list.add(dt);
request.setAttribute("list",list);
}else{
out.print("未能查询到数据!");
}
rs.close();
stmt.close();
conn.close();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
List<DetectItem> list = (List<DetectItem>)request.getAttribute("list");
if(list == null || list.size() < 1){
out.print("没有数据!");
}else{
for(DetectItem dt : list){
out.print("ItemName:"+dt.getItemName());
}
}
%>
这是运行结果
这是数据库的结果
是我的jsp页面代码哪需要修改吗?求详解,谢谢
jsp中你的那句if(rs.next())使得赋值语句只执行了一次,所以最后显示的结果才只有第一个数据,这句改成while(rs.next())就可以了
jsp再加个for循环来显示目标数据?
要在JSP页面中实现数据库的查询主要有连接及查询数据库的java代码部分和html页面代码部分。实现这个页面,我们进行一个三步走
1、写出连接数据库的代码
2、写出用于显示页面的代码
3、将连接数据库的代码插入到页面代码的恰当位置。
1.1 导入sql包
<% import="java.sql.*" %>
1.2 连接、查询、关闭数据库
怎样查看冰箱里面有没有大象?1、打开冰箱门。2、看一下。3、关闭冰箱门。就是这个过程。。。。。
[html] view plain copy
<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://localhost:3306/news";
String user="root";
String password="1234";
//配置并连接数据库
Connection conn = DriverManager.getConnection(url, user, password);
Statement st = conn.createStatement();
//查询语句,显示最后10条并且倒序排列
ResultSet rs = st.executeQuery("SELECT * FROM data ORDER BY id DESC LIMIT 10");
//输出表头
out.println("
为了页面漂亮一点,做点点美化~做一个表格来存放数据
[html] view plain copy
<%@ page language="java" import="java.util.*, java.sql.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%request.setCharacterEncoding("UTF-8");%>
<%response.setCharacterEncoding("UTF-8");%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
标题 | 内容 | 时间 |
放的时候注意代码的位置安排。
[html] view plain copy
<%@ page language="java" import="java.util.*, java.sql.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%request.setCharacterEncoding("UTF-8");%>
<%response.setCharacterEncoding("UTF-8");%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
%>
<%
//把表格第二行的显示放到while循环中,就可以根据查询结果画出表格了。参数则放在
<%}
//注意"}"的位置 %>
标题 | 内容 | 时间 |
内的相应位置。 ResultSet rs = st.executeQuery("SELECT * FROM data ORDER BY id DESC LIMIT 10"); while(rs.next()){%> | ||
<%=rs.getString("title") %> | <%=rs.getString("content") %> | <%=rs.getString("time") %> |
<%
rs.close();
conn.close();
%>
if(rs.next())改成while(rs.next())
建议不要使用纯jsp开发,用java开发web程序比较快