查询出来的结果没数据,
数据库明明有数据。
前台不报错,
后台也不报错。

解决方案 »

  1.   

    把你的SQL语句copy出来,在PL/SQL或者其他的工具里面执行看能得到数据不
      

  2.   

    1、sql放數據庫有東西不
    2、連接的庫對不
    3、用拼接SQL的方式能查出來不
      

  3.   

    一个三个页面 第一个jsp页面
    <%@ page contentType="text/html; charset=gbk"%>
    <%@page import="smartmt.db.DataSourceFactory"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="smartmt.model.Address"%>
    <%@page import="smartmt.db.AddressDao"%>
    <%@page import="smartmt.model.AddressGroup"%>
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    <html>
    <head>
    <title>.</title>
    <meta content="text/html; charset=GBK" http-equiv="Content-Type">
    <style type="text/css" media="all">
           @import url("../css/displayTag/maven-base.css");
           @import url("../css/displayTag/maven-theme.css");
           @import url("../css/displayTag/site.css");
           @import url("../css/displayTag/screen.css");
         </style>
         <link rel="stylesheet" href="../css/misc2.css" type="text/css">
         <link rel="stylesheet" href="../css/thickbox.css" type="text/css" media="screen" />
    <script type="text/javascript" src="../js/jquery.js"></script>
    <script type="text/javascript" src="../js/thickbox.js"></script>
    <script LANGUAGE="JavaScript">
    function checkAll() {
    var a = document.getElementsByName("checkbox_phone");
    var n = a.length;
    for (var i=0; i<n; i++) {
    a[i].checked = true;//window.event.srcElement.checked;
    }
    } function cancelAll() {
    var a = document.getElementsByName("checkbox_phone");
    var n = a.length;
    for (var i=0; i<n; i++) {
    a[i].checked = false;//window.event.srcElement.checked;
    }
    } function go() {
    addrForm.action = "manual.jsp";
    var a = document.getElementsByName("checkbox_phone");
    var n = a.length;
    var count = 0;
    for (var i=0; i<n; i++) {
    if(a[i].checked) count++;
    }
    if(count > 0) {
    return true;
    } else {
    alert("您未选中任何联系人");
    return false;
    }
    }
    function go_all(groupId) {
    location="manual.jsp?addAll=yes&groupId="+groupId;
    } function groupChange(value) {
    location="b_all.jsp?groupId="+value;
    }

    function deleteAddr() {
    var a = document.getElementsByName("checkbox_phone");
    var n = a.length;
    var count = 0;
    for (var i=0; i<n; i++) {
    if(a[i].checked) count++;
    }
    if(count > 0) {
    addrForm.action = "b_delete.jsp";
    return confirm("您选中了"+count+"条联系人记录,确认要删除吗?");
    } else {
    alert("您未选中任何联系人");
    return false;
    }
    }
    </script>
    </head>
    <%
    String start = request.getParameter("start");
             String name = request.getParameter("name"); 
    Long userId = (Long)session.getAttribute("userId");
    String phone = request.getParameter("phone");
    if(userId == null) {
    %><script>top.window.location.href='../index.htm'</script><%
    return;
    }
    AddressDao aDao = new AddressDao(DataSourceFactory.getDataSource());
    String groupId = request.getParameter("groupId");
    long lGroupId = -1;
    if(groupId != null) {
    lGroupId = Long.parseLong(groupId);
    }
    ArrayList<Address> aList = aDao.getAllAddressPlus(userId,lGroupId);

    %>
    <body bgcolor="#efefef">
    <form method="get" action="b_nameall.jsp"> 手机号码
    <input type="text" name="phone"
    value="<%=phone == null ? "" : phone%>">
    姓名
    <input type="text" name="name" value="">
    生日
    <input type="text" id="dateStart" name="start" value="<%=start%>" />
    <input type="submit" value="查询" />
    </form>
    <a href="b_insert.jsp?keepThis=true&TB_iframe=true&height=350&width=400" title="添加联系人" class="thickbox">添加联系人</a>
    <a href="b_group_insert.jsp?keepThis=true&TB_iframe=true&height=350&width=400" title="添加分组" class="thickbox">添加分组</a>&nbsp;
           <a href="b_group_setting.jsp?keepThis=true&TB_iframe=true&height=350&width=400" title="修改分组" class="thickbox">修改分组</a>&nbsp;
           <a href="b_group_delete.jsp?keepThis=true&TB_iframe=true&height=350&width=400" title="删除分组" class="thickbox">删除分组</a>&nbsp; 
    <a href="b_upload.jsp?keepThis=true&TB_iframe=true&height=350&width=400" title="导入联系人" class="thickbox">导入联系人</a>
    <a href="template.xls">导入文件模板下载</a><br/>

    <select name="groupId" onchange="groupChange(this.options[this.options.selectedIndex].value)">
    <option value="-1">全部联系人</option>
    <%
    ArrayList<AddressGroup> groupList = aDao.getAllGroup(userId);
    for(AddressGroup group : groupList) {
    %><option value="<%=group.getId()%>" <%=lGroupId==group.getId()?"selected":""%>><%=group.getName()%></option><%
    }
    //户名、手机号码、分组、公司、地址
    %>
    </select> <form id="addrForm" method="get" action="manual.jsp">
            <% request.setAttribute( "aList", aList ); %>
            <display:table name="aList" pagesize="20" decorator="smartmt.display.AddressDecorator" id="dis">
              <display:column property="checkBox" title="选中"/>
      <display:column property="name" title="姓名" />
      <display:column property="groupName" title="分组"/>
      <display:column property="phone" title="手机号码"/>
      <display:column property="company" title="公司"/>
      <display:column property="address" title="地址"/>
            </display:table>
            <input type="button" value="全部选中" onclick="checkAll()">
            <input type="button" value="全部取消" onclick="cancelAll()">
            <input type="submit" value="发送短信" onclick="return go()">
            <input type="submit" value="删除联系人" onclick="return deleteAddr()">
            <input type="button" value="发送短信(分组全部联系人)" onclick="return go_all(<%=lGroupId%>)">
            </form>
    </body>
    </html>
      

  4.   

    第二个JSP页面
    <%@ page contentType="text/html; charset=gbk"%>
    <%@page import="smartmt.db.DataSourceFactory"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="smartmt.model.Address"%>
    <%@page import="smartmt.db.AddressDao"%>
    <%@page import="smartmt.model.AddressGroup"%>
    <%@page import="smartmt.model.Bill"%>
    <%@page import="java.util.HashMap"%>
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    <html>
    <head>
    <title>.</title>
    <meta content="text/html; charset=GBK" http-equiv="Content-Type">
    <style type="text/css" media="all">
           @import url("../css/displayTag/maven-base.css");
           @import url("../css/displayTag/maven-theme.css");
           @import url("../css/displayTag/site.css");
           @import url("../css/displayTag/screen.css");
         </style>
         <link rel="stylesheet" href="../css/misc2.css" type="text/css">
         <link rel="stylesheet" href="../css/thickbox.css" type="text/css" media="screen" />
    <script type="text/javascript" src="../js/jquery.js"></script>
    <script type="text/javascript" src="../js/thickbox.js"></script>
    <script LANGUAGE="JavaScript">
    function checkAll() {
    var a = document.getElementsByName("checkbox_phone");
    var n = a.length;
    for (var i=0; i<n; i++) {
    a[i].checked = true;//window.event.srcElement.checked;
    }
    } function cancelAll() {
    var a = document.getElementsByName("checkbox_phone");
    var n = a.length;
    for (var i=0; i<n; i++) {
    a[i].checked = false;//window.event.srcElement.checked;
    }
    } function go() {
    addrForm.action = "manual.jsp";
    var a = document.getElementsByName("checkbox_phone");
    var n = a.length;
    var count = 0;
    for (var i=0; i<n; i++) {
    if(a[i].checked) count++;
    }
    if(count > 0) {
    return true;
    } else {
    alert("您未选中任何联系人");
    return false;
    }
    }
    function go_all(groupId) {
    location="manual.jsp?addAll=yes&groupId="+groupId;
    } function groupChange(value) {
    location="b_all.jsp?groupId="+value;
    }

    function deleteAddr() {
    var a = document.getElementsByName("checkbox_phone");
    var n = a.length;
    var count = 0;
    for (var i=0; i<n; i++) {
    if(a[i].checked) count++;
    }
    if(count > 0) {
    addrForm.action = "b_delete.jsp";
    return confirm("您选中了"+count+"条联系人记录,确认要删除吗?");
    } else {
    alert("您未选中任何联系人");
    return false;
    }
    }
    </script>
    </head>
    <%
         String start = request.getParameter("start");
             String name = request.getParameter("name"); 
    Long userId = (Long)session.getAttribute("userId");
    String phone = request.getParameter("phone");
    if(userId == null) {
    %><script>top.window.location.href='../index.htm'</script><%
    return;
    }
    AddressDao aDao = new AddressDao(DataSourceFactory.getDataSource());
    String groupId = request.getParameter("groupId");
    long lGroupId = -1;
    if(groupId != null) {
    lGroupId = Long.parseLong(groupId);
    }
    //ArrayList<Address> aList = aDao.getAllAddressPlus(userId,lGroupId);
    //ArrayList<Address> aList = aDao.getAllAddressPlus1(name,userId,lGroupId);
    //ArrayList<HashMap<String, String>> aList= aDao.getMoList(userId, start, phone,  name);
    ArrayList<Address>  aList1=aDao.adreesName(name);

     %>
    <body bgcolor="#efefef">
    <%
    request.setAttribute("aList1", aList1);
    %>
    <display:table name="aList" pagesize="20">
    <display:column property="checkBox" title="选中" />
    <display:column property="id" title="id" />
    <display:column property="name" title="姓名" />
    <display:column property="gender" title="分组" />
    <display:column property="phone" title="手机号码" />
    <display:column property="job" title="职位" />
    <display:column property="company" title="公司" />
    <display:column property="address" title="地址" />
    <display:column property="birthday" title="生日" />
    <display:column property="email" title="邮箱" />
    <display:column property="qq" title="QQ" />
    <display:column property="msn" title="MSN" />
    <display:column property="reserve" title="地址" />
    <display:column property="userId" title="用户编号" />
    <display:column property="groupId" title="组号" />
    </display:table><br>
          
           
    <input type="button" value="全部选中" onclick="checkAll()">
    <input type="button" value="全部取消" onclick="cancelAll()">
    <input type="submit" value="发送短信" onclick="return go()">
    <input type="submit" value="删除联系人" onclick="return deleteAddr()">
    <input type="button" value="发送短信(分组全部联系人)"
    onclick="return go_all(<%=lGroupId%>)">
                <form method="get" action="b_all.jsp">
    <input type="submit" value="返回"/>
    </form>
    </body>
    </html>
      

  5.   

    还有个DAOpublic ArrayList<Address> adreesName(String name)
    {
    ArrayList<Address> aList=new ArrayList<Address>();
    String sql = "select * from plat_address_book with(nolock) where name=?";
    List tbl = dbexec.queryForList(sql,new Object[]{ name} );
    Iterator it = tbl.iterator();
    while(it.hasNext()) {
    Address addr = new Address();
    Map rec = (Map)it.next();
    addr.setId((Long)rec.get("id"));
    addr.setName((String)rec.get("name"));
    addr.setGender((Integer)rec.get("gender"));
    addr.setPhone((String)rec.get("phone"));
    addr.setJob((String)rec.get("job"));
    addr.setCompany((String)rec.get("company"));
    addr.setAddress((String)rec.get("address"));
    addr.setBirthday((Timestamp)rec.get("birthday"));
    addr.setEmail((String)rec.get("email"));
    addr.setQq((String)rec.get("qq"));
    addr.setMsn((String)rec.get("msn"));
    addr.setReserve((String)rec.get("reserve"));
    addr.setUserId((Long)rec.get("userId"));
    addr.setGroupId((Long)rec.get("groupId"));
    aList.add(addr);
    }
    return aList;
    }
      

  6.   

    既然在PL/SQL里面可以得到数据,那么肯定是在处理返回结果集的时候有问题了,你们用的是JDBC还是框架的东西?
      

  7.   


    String sql = "select * from plat_address_book with(nolock) where name=?";
    List tbl = dbexec.queryForList(sql,new Object[]{ name} );這個name打印出來是什麽
      

  8.   

    看看你的编码!最好用GBK的,还有取值得时候也得加上
    request.setCharacterEncoding("gbk");
    response.setCharacterEncoding("gbk");
    要保证你输入的中文不是乱码。
      

  9.   

    要不在你取出的字符串在转一次,如:
    name=new String(name.getBytes("iso-8859-1"),"gbk");
      

  10.   

    String start = request.getParameter("start");
    String name = request.getParameter("name"); 
    在这个的上面加上:
    request.setCharacterEncoding("gbk");
    response.setCharacterEncoding("gbk");
    如果不行的话就第二种:
    String name = request.getParameter("name"); 
    name=new String(name.getBytes("iso-8859-1"),"gbk");
    在不行就自己写个过滤器了。
      

  11.   

    org.apache.jasper.JasperException: An exception occurred processing JSP page /AddressBook/b_all.jsp at line 8380:     
    81:  String start = request.getParameter("start");
    82:          String name = request.getParameter("name"); 
    83:          name=new String(name.getBytes("iso-8859-1"),"gbk");
    84:  Long userId = (Long)session.getAttribute("userId");
    85:  String phone = request.getParameter("phone");
    86:  if(userId == null) {
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root causejava.lang.NullPointerException
    org.apache.jsp.AddressBook.b_005fall_jsp._jspService(b_005fall_jsp.java:148)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    这样写报错了
      

  12.   

    你没有输name的值吧,你把null拿去转肯定就错了嘛?
      

  13.   

    前面那几位也说了。编码问题。本人建议编码还是用UTF-8的,对中文的兼容性比较好(虽然有些中文字不能正常显示)。还有那个GBK大写试试。检查一下 自己的字符过滤器配置时在web.xml中是否是写在最前面。
      

  14.   

    PL/SQL里面可以得到数据,JDBC也不一定能够查询出来--也许你的数据是从PL/SQL添加的还没提交呢
      

  15.   


    全部用utf-8,頁面到後臺,凡是有設置編碼的,全部utf-8
      

  16.   


    不行  这整个项目都是GBK  刚才试了下 转码的问题也解决了 可以取到值了 是正确的 但还是查不出值 数据库里 明明有这个值的  怎么回事?
      

  17.   


    String sql = "select * from plat_address_book with(nolock) where name=?";
    List tbl = dbexec.queryForList(sql,new Object[]{name} );
    System.out.println(name);
      SQL是对的。值已经在后台打印出了  是正确的。
      

  18.   

    select * from plat_address_book with(nolock) where name=?這句SQL丟到數據庫有結果不
      

  19.   

    有结果。
    会不会是JSP页面值的问题?
      

  20.   

    就是两个页面直接的传值   我把查询的那个文本框 房子 b_all.jsp页面去了。  然后要在b_nameall.jsp 显示查询的数据。
       如果在b_all里面显示数据的话 就会有乱码问题。
      

  21.   


    debug 的结果是 JSP页面没取到值 怎么回事?
      

  22.   

    dbexec.queryForList(sql,new Object[]{name} );把這個類貼出來
      

  23.   


    @SuppressWarnings("unchecked")
    public ArrayList<Address> adreesName(String name)
    {
    ArrayList<Address> aList=new ArrayList<Address>();
    String sql = "select * from plat_address_book with(nolock) where name=?";
    List tbl = dbexec.queryForList(sql,new Object[]{name} );
    System.out.println(name);
    Iterator it = tbl.iterator();
    while(it.hasNext()) {
    Address addr = new Address();
    Map rec = (Map)it.next();
    addr.setId((Long)rec.get("id"));
    addr.setName((String)rec.get("name"));
    addr.setGender((Integer)rec.get("gender"));
    addr.setPhone((String)rec.get("phone"));
    addr.setJob((String)rec.get("job"));
    addr.setCompany((String)rec.get("company"));
    addr.setAddress((String)rec.get("address"));
    addr.setBirthday((Timestamp)rec.get("birthday"));
    addr.setEmail((String)rec.get("email"));
    addr.setQq((String)rec.get("qq"));
    addr.setMsn((String)rec.get("msn"));
    addr.setReserve((String)rec.get("reserve"));
    addr.setUserId((Long)rec.get("userId"));
    addr.setGroupId((Long)rec.get("groupId"));
    aList.add(addr);
    }
    return aList;
    }
      

  24.   

    应该是编码的问题啊。你在数据库里name设一个英文名字。然后用原来的代码,查询的时候输入这个英文的名字。如果可以的话就说明没有别的错误只是汉字字符集编码问题。
      

  25.   


    貼錯了是這個dbexec.queryForList(sql,new Object[]{name} );
      

  26.   


    现在的问题是就是两个页面直接的传值 我把查询的那个文本框 放在 b_all.jsp页面去了。 然后要在b_nameall.jsp 显示查询的数据。
      如果在b_all里面显示数据的话 就会有乱码问题。
      

  27.   

    List tbl = dbexec.queryForList(sql,new Object[]{name} );加句System.out.pringln(tbl.size());看看這裏有沒東西出來
      

  28.   

    第一,再次檢查SQL
    第二,dbexec.queryForList這個可能有問題不過多是SQL問題。。
      

  29.   


    检查确认 SQL没问题。
    是两个页面 传值的问题 。
    那位高人指点 两个页面传值的问题。
    然后如果在一个页面显示结果的话 就会有乱码问题 但是值能传过来。
      

  30.   

    你百度搜tomcat乱码、、
    你看看数据库中是不是乱码了已经、
    后台打印是否乱码
      

  31.   

    你的数据库编码要和jsp中一样
      

  32.   

    最好debug看看。debug能看到的。。
      

  33.   

    看看 有什么东西缺少了 比标准标签库中的<tag .....>
      

  34.   

    我遇见过种问题:
    一般是你这个表中有一列是数字类型,结果表这个列的数据 出现被零除或是无限大的数字。你可以把一列一列的显示 ,不要用select * ,看看是哪列有问题
      

  35.   

    如果是oracle看看是不是你插入数据后没有commit;
      

  36.   

    怎么现在还有在jsp页面嵌套一大推代码的啊?
      

  37.   

    学习一下
            String sql = "select * from plat_address_book with(nolock) where name=?";
            List tbl = dbexec.queryForList(sql,new Object[]{ name} );with(nolock)是什么意思?
      

  38.   

    你敢不敢用debug一步步跟进去 看看是在哪边出的问题啊 先看看从页面取到的值在后台是对的不 在看看你连接的数据库是对的不 不行就一步步跟进去 看看在哪儿走不下去的。
      

  39.   

    各位大侠们解决了。是displaytag里面checkbox的问题。谢谢各位大侠了 嘎嘎