嗬嗬,你的判断正确,你的那个sql语句,c.name查询结束后,结果中的字段名肯定不是c.name哦!

解决方案 »

  1.   

    TO: BillyW(阿弥陀佛) 
    没有错误! 
    就是没有提取到数据
    TO:zhang21cnboy(事了抚衣去,不留身与名)String fmstr="select  name from photoinfo where partenname='"+rs.getString("c.name")+"'";//这里得到的fmstr 放到sqleditor中 可以得到数据,
    out.print(fmstr);/// 然后在IE里把这个打印出来的语句放到sql查询分析器里执行 是可以得到数据的,所以你说的这种情况根本不存在
      

  2.   

    楼主把 String sqlstr="select u.name,c.name ,c.type from userinfo u,photocoll c where c.userid=u.id and u.id=c.userid and u.id= "+id;
    改成 String sqlstr="select u.name as uname,c.name as cname ,c.type as ctype from userinfo u,photocoll c where c.userid=u.id and u.id=c.userid and u.id= "+id;rs.getString的时候你就rs.getString(“cname”); 试试!!
      

  3.   

    zhang21cnboy说的对,
    把rs.getString("c.name")换成rs.getString(2)
      

  4.   

    我希望你们再看看
    问题应该是在while语句内 //取到做为封面的相片名  
    String xcm=rs.getString("c.name");
     String fmstr="select  name from photoinfo where partenname='"+xcm+"'";
    out.print("测试"+fmstr);//在IE里把这里得到的字符串 放到mysql的sqleditor里去执行是可以 得到数据的!!!
     Statement stmtfm=conn.createStatement();
     ResultSet fmrs=stmtfm.executeQuery(fmstr);
     String imgname="";
        if(fmrs.next())
    {
      imgname=fmrs.getString("name");
       
      
      }
      

  5.   

    问题在于rs.getString("c.name")语句!!
    c.name 应该对应于这个表的字段名!
      

  6.   

    问题在于rs.getString("c.name")语句!!
    c.name 应该对应于这个表的字段名!补充:把rs.getString("c.name")中的"c.name"换成表的对应的字段名!
      

  7.   

    你们别再说 rs.getString("c.name") 了我换过来了 还是没有得到数据<table>
        <TR>
       <%
       Statement stmt=null;
       ResultSet rs=null;
       stmt=conn.createStatement();
       String sqlstr="select u.name uname,c.name cname,c.type ctype from userinfo u,photocoll c where c.userid=u.id and u.id=c.userid and u.id= "+id;
       rs=stmt.executeQuery(sqlstr);
       
       
      while(rs.next())
       {
     //String countstr="select count(p.id)  from photoinfo p,photocoll c where p.partenname=c.name and c.userid="+id+" and p.partenname='"+rs.getString("c.name")+"'";
    //String countstr="select count(id) from userinfo";
    //Statement stmtcount=conn.createStatement();
    //ResultSet rscount=stmtcount.executeQuery(countstr);
    //rscount.next();
    //int inttotal=rscount.getInt(1);
    //out.print("我来看看"+countstr);
     
     //取到做为封面的相片名  
     
     String xcm=rs.getString("cname");
     String fmstr="select  name from photoinfo where partenname='"+xcm+"'";
     out.print("测试"+fmstr);
     Statement stmtfm=conn2.createStatement();
     ResultSet fmrs=stmtfm.executeQuery(fmstr);
     String imgname="";
        if(fmrs.next())
    {
      imgname=fmrs.getString("name");
       
      
      }
        fmrs.close();
    stmtfm.close();
     
    /* 测试
    String tempstr="select name from userinfo";
    Statement stmtx=conn.createStatement();
    ResultSet rsx=stmtx.executeQuery(tempstr);
    String tempname=" ";
     if (rsx.next())
       {
          tempname=rsx.getString("name");
        }   
    */ 
      %>
    <td>
      <table> 
      <tr>
      <td>
       封面:<img src="upload/<%=imgname%>.jpg" width="120" height="200"> 
      </td>
      </tr>
      <tr>
    <td>
     相册名: <%=rs.getString("cname")%>
    </td>
      </tr>
      <tr>
    <td>
    类别:<%=rs.getString("ctype")%>
    </td>
      </tr>
      <tr>
    <td>
     相片总数<%--=inttotal--%>  
    </td>
      </tr>
      </table>
     </td>
      
      <%   
     }
      %>
       
     
     </tr>
     </table>
      

  8.   

    /* 测试
    String tempstr="select name from userinfo";
    Statement stmtx=conn.createStatement();
    ResultSet rsx=stmtx.executeQuery(tempstr);
    String tempname=" ";
    if (rsx.next())
    {
    tempname=rsx.getString("name");
    }
    */   
    你的第二部分为什么不用"select * from photoinfo"进行测试?
      

  9.   

    别人叫你把sql语句改为c.name as cname你都没试,怎么知道不行
      

  10.   

    TO:su27007(人外有人,天外有天)   
     第二部分 用"select * from photoinfo"  可以得到数据
     可为什么 加了where 语句 就不行了?? 
       xcm 变量 是得到了数据的!!      String xcm=rs.getString("cname");
    // String fmstr="select  name from photoinfo"; //这里可以得到数据
    String fmstr="select  name from photoinfo where partenname='"+xcm+"'";
    out.print("测试"+fmstr);//这里打印出来语句 放到sqleditor里执行 可以得到数据
     Statement stmtfm=conn2.createStatement();
    ResultSet fmrs=stmtfm.executeQuery(fmstr);
    String imgname="";
        if(fmrs.next())
    {
      imgname=fmrs.getString("name");
       
      
      }
        fmrs.close();
    stmtfm.close();
      

  11.   

    同意rnfc2003的意见,数据库连接没有关闭的缘故
      

  12.   

    把你的 fmrs.close();
    stmtfm.close();
    放到最后再关。
      

  13.   

    原来问题在这里:String fmstr="select name from photoinfo where partenname='"+xcm.trim()+"'";
     out.print("测试"+fmstr);
     Statement stmtfm=conn2.createStatement();
     ResultSet fmrs=null;
     fmrs=stmtfm.executeQuery(fmstr);
     String imgname="";
     fmrs.next();
      //imgname=(String)fmrs.getString("name");//问题出现在这里
     imgname="050211";
     fmrs.close();
     stmtfm.close();如果不注释掉,我注释的那一句 就会出现如下错误:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: Before start of result set
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.coll_jsp._jspService(coll_jsp.java:284)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.sql.SQLException: Before start of result set
    org.gjt.mm.mysql.ResultSet.checkRowPos(ResultSet.java:1336)
    org.gjt.mm.mysql.ResultSet.getString(ResultSet.java:220)
    org.gjt.mm.mysql.ResultSet.getString(ResultSet.java:889)
    org.apache.jsp.coll_jsp._jspService(coll_jsp.java:218)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
    --------------------------------------------------------------------------------Apache Tomcat/5.0.28
      

  14.   

    你把 
    if(fmrs.next())
    {
    imgname=fmrs.getString("name");
    }
    中的if换成while试试看!
      

  15.   

    对了,你先判断一下fmrs.next()这个方法执行的结果是什么?
      如果是false,那么执行fmrs.getString("name")这个方法,肯定是不对的!
      

  16.   

    问题找到了 原来是编码的问题
    蒙了2天 我火了
    String fmstr="select name from photoinfo where  partenname='kz'";
    如果 把partenname='kz' 条件换成中文 就得不到数据 
    但我从数据库里可以取出中文, 为什么在条件语句里不支持中文??这个怎么解决啊???
      

  17.   

    你把那个条件转码看看!
      String类里面有个方法,
      String sqlparameter = new String(partname.getBytes("iso-8859-1"), "big5");
      

  18.   

    TO: su27007(人外有人,天外有天) (这个方法无效!另外: 我在mysql里建库的时候 定义的编码是 gb2312
      

  19.   

    忘记跟你说了,
       String sqlparameter = new String(partname.getBytes("iso-8859-1"), "big5");
       这个里面的big5是繁体的字符集,简体的话就用GB2312!
       那个ISO-8859-1也可能要换。
      

  20.   

    to: su27007(人外有人,天外有天) ( 这个我当然知道 
    仍然无效:
      

  21.   

    既然是编码问题就把sql转码试试

    String sqlparameter = new String(partname.getBytes("iso-8859-1"), "gb2312");
    或反过来试试
    String sqlparameter = new String(partname.getBytes("gb2312"), "iso-8859-1");
      

  22.   

    突然想起来,你的库是中文的
    不行的话
    试试
    String sqlparameter = new String(partname.getBytes("gb2312"), "UTF8");
      

  23.   


    paras = new String(paras.getBytes("ISO-8859-1"), "big5");
    sqlRst=sqlStmt.executeQuery("select * from employee_tb where emp_name='"+paras+"'");
    在繁体操作系统下测试通过,页面要有
    <%@page contentType="text/html;charset=big5"%>
    paras为繁体中文的参数
      

  24.   

    个人建议,尽量避免rs循环中再出现另一个rs,即使他们名字不一样,即使他们也不是同一个连接。
      

  25.   

    <table>
        <TR>
       <%
       Statement stmt=null;
       ResultSet rs=null;
       stmt=conn.createStatement();
       String sqlstr="select u.name,c.name as cname,c.type from userinfo u,photocoll c where c.userid=u.id and u.id=c.userid and u.id= "+id;
       rs=stmt.executeQuery(sqlstr);
       
       
      while(rs.next())
       {
        
     //取到做为封面的相片名   
    /*  第一部分
     String fmstr="select  name from photoinfo where partenname='"+rs.getString("c.name")+"'";//这里得到的fmstr 放到sqleditor中 可以得到数据,  
     Statement stmtfm=conn.createStatement();
     ResultSet fmrs=stmtfm.executeQuery(fmstr);//问题在这里吗???
     String imgname="";
        if(fmrs.next())
    {
      imgname=fmrs.getString("name");
       out.print("测试"+fmstr);//根本没有进来   
      }
    */
    /* 测试 第二部分  这里可以得到数据
    String tempstr="select name from userinfo"; 
    Statement stmtx=conn.createStatement();
    ResultSet rsx=stmtx.executeQuery(tempstr);
    String tempname=" ";
     if (rsx.next())
       {
          tempname=rsx.getString("name");
        }   
    */ 
      %>
    <td>
      <table> 
      <tr>
      <td>
     封面:<img src="upload/<%=tempname%>.jpg" width="120" height="200"> 
      </td>
      </tr>
      <tr>
    <td>
     相册名: <%=rs.getString("cname ")%>
    </td>
      </tr>
      <tr>
    <td>
    类别:<%=rs.getString("c.type")%>
    </td>
      </tr>
      </table>
     </td>
      
      <%   
     }
      %>
       
     
     </tr>
     </table>修改:
     String sqlstr="select u.name,c.name as cname,c.type from userinfo u,photocoll c where c.userid=u.id and u.id=c.userid and u.id= "+id;
    修改2:
    <td>
     相册名: <%=rs.getString("cname ")%>
    </td>