在access中,建立了一个list表,里面有id和name两个字段,输入数据后。现在从jsp页面要连接数据库,查询多条数据并输出来该怎么样写呢。。
我用的查找语句是:<%
ResultSet rs=connDBBean.executeQuery("select * from list where id between 1 and 9");
String name="";
    if(rs!=null){
  
while(rs.next()){
name=rs.getString("name");
}%>
<%=name%>
<%
rs.close();}
else{out.println("The value returned is null!");}

%>
(ps:connDBBean 是我用的javaBean创建的一个连接对象。。)这样的话只会输出第九个name,,前八个都没有输出,,请问为什么,,,正确的写法是什么呢???在线等。求大神帮忙

解决方案 »

  1.   

    写错了,输出应该放在 while 循环中,类似:while (rs.next()) { 
      String name = rs.getString("name")
      out(name); // out是JSP自带对象,负责页面信息输出
      out("<br>\n"); // 输出个换行标志而已
    }
      

  2.   


    不是吧?你这句话“select * from list where id between 1 and 9”直接数据库执行是什么效果?另外把你修改后的完整程序再贴一次我看看。
      

  3.   

    <%
    ResultSet rs=connDBBean.executeQuery("select * from list where id between 1 and 9");
        if(rs!=null){
        while(rs.next()){
    String name = rs.getString("name")
            out(name); // out是JSP自带对象,负责页面信息输出
            out("<br>\n"); // 输出个换行标志而已
    rs.close();}
    else{out.println("The value returned is null!");}

    %>
      

  4.   

    select * from list where id between 1 and 9
    把这条语句直接放到数据库里去执行。看看是不是1到9条数据
      

  5.   

    你这个程序不对吧怎么会有个 rs.close() 在循环里面?!把数据集close()了还怎么循环啊?ResultSet rs=connDBBean.executeQuery("select * from list where id between 1 and 9");
    if(rs!=null){
      while(rs.next()){
        String name = rs.getString("name")
        out(name); // out是JSP自带对象,负责页面信息输出
        out("<br>\n"); // 输出个换行标志而已
      }
    }
    else{
      out.println("The value returned is null!");
    }
    rs.close(); // 这个必须放在finally里面,否则容易发生泄漏。
      

  6.   

    因为不知道你是否定义了VO(值对象),所以暂且用Map来代替:ArrayList<Map> lst = new ArrayList<Map>();
    ResultSet rs=connDBBean.executeQuery("select * from list where id between 1 and 9");
    if(rs!=null){
      while(rs.next()){
        Map m = new HashMap();
        m.set("id", rs.getInteger("id");
        m.set("name", rs.getString("name");
        lst.add(m);
      }
    } else {
      out.println("The value returned is null!");
    }
    rs.close(); // 这个必须放在finally里面,否则容易发生泄漏。如果只需要name的话,可以直接定义:ArrayList<String> lst = new ArrayList<String>();
      

  7.   

    输出的结果是9个一样的name=name;另外,根据我们学的java的知识,应该改成m.put("";"");我估计问题是java虚拟机把“”内的字符串当做了要传的值,而不是想要赋给的变量不知道我的理解队不对。。
      

  8.   

    接上一个贴,,如果把lst输出来的话,是九个一样的数据对
      

  9.   

    理解的不对。不会是你整错了吧?你先换个简单的:
    ArrayList<String> lst = new ArrayList<String>();
    ResultSet rs=connDBBean.executeQuery("select * from list where id between 1 and 9");
    if(rs!=null){
      while(rs.next()){
        lst.add(rs.getString("name"));
      }
    } else {
      out.println("The value returned is null!");
    }
    rs.close(); // 这个必须放在finally里面,否则容易发生泄漏。
    System.out.println(lst);
    out.write(lst);确保这个是没问题的,然后再看改值对象或Map;我先睡了