CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

砸100分 问个 纳闷的问题

楼主mfc2003(抗战二十年(november rain))2005-03-29 09:31:52 在 Java / Web 开发 提问

做个相册玩,出现了个问题   ,请看看  
        我怀疑   问题出在rs.getString("c.name")上!!!,就是有关联的时候出现问题  
  <table>  
          <TR>  
        <%  
        Statement   stmt=null;  
        ResultSet   rs=null;  
        stmt=conn.createStatement();  
        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;  
        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("c.name")%>  
  </td>  
      </tr>  
      <tr>  
  <td>  
  类别:<%=rs.getString("c.type")%>  
  </td>  
      </tr>  
      </table>  
    </td>  
       
      <%        
    }  
      %>  
         
     
    </tr>  
    </table> 问题点数:100、回复次数:45Top

1 楼BillyW(阿弥陀佛)回复于 2005-03-29 09:34:26 得分 5

错误提示信息???Top

2 楼zhang21cnboy(事了抚衣去,不留身与名)回复于 2005-03-29 09:39:14 得分 5

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

3 楼mfc2003(抗战二十年(november rain))回复于 2005-03-29 09:44:18 得分 0

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

4 楼keen1982(keen)回复于 2005-03-29 09:54:22 得分 5

楼主把   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”);   试试!!  
   
  Top

5 楼dophin1003(浮云~~~)回复于 2005-03-29 09:55:19 得分 5

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

6 楼mfc2003(抗战二十年(november rain))回复于 2005-03-29 10:03:00 得分 0

我希望你们再看看  
  问题应该是在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");  
         
       
      }Top

7 楼menghuanlang(梦幻狼)回复于 2005-03-29 10:23:42 得分 5

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

8 楼menghuanlang(梦幻狼)回复于 2005-03-29 10:25:11 得分 5

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

9 楼mfc2003(抗战二十年(november rain))回复于 2005-03-29 10:34:05 得分 0

你们别再说   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>Top

10 楼dophin1003(浮云~~~)回复于 2005-03-29 11:00:14 得分 5

如果不是那里的错,就找不到错误了。  
   
  你的第一部分和第二部分是一样的,为什么第二部分不出错?Top

11 楼xitianjile(空想社會主義)回复于 2005-03-29 11:26:17 得分 5

难道不会用异常来找错误吗?  
  猜测是不好的。。Top

12 楼mhlovers800827()回复于 2005-03-29 13:32:36 得分 5

upTop

13 楼dophin1003(浮云~~~)回复于 2005-03-29 13:47:58 得分 0

lz说了没有异常,只是提不到数据而已。Top

14 楼su27007(人外有人,天外有天)回复于 2005-03-29 13:56:51 得分 20

/*   测试  
  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"进行测试?Top

15 楼wafer_w(流浪的风)回复于 2005-03-29 14:38:15 得分 1

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

16 楼mfc2003(抗战二十年(november rain))回复于 2005-03-29 16:05:19 得分 0

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();Top

17 楼daimojingdeyu(戴墨镜的鱼)回复于 2005-03-29 16:15:45 得分 1

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

18 楼nickyliuk(茶壶里煮饺子)回复于 2005-03-29 16:16:40 得分 1

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

19 楼mfc2003(抗战二十年(november rain))回复于 2005-03-29 16:23:08 得分 0

原来问题在这里:  
   
  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   report  
   
  message    
   
  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  
  Top

20 楼wtiancai(博学,审问,慎思,明辨,笃行.)回复于 2005-03-29 16:29:46 得分 20

是空值报错吧Top

21 楼su27007(人外有人,天外有天)回复于 2005-03-29 17:00:06 得分 0

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

22 楼su27007(人外有人,天外有天)回复于 2005-03-29 17:08:12 得分 5

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

23 楼mfc2003(抗战二十年(november rain))回复于 2005-03-29 17:10:48 得分 0

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

24 楼su27007(人外有人,天外有天)回复于 2005-03-29 17:15:44 得分 0

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

25 楼su27007(人外有人,天外有天)回复于 2005-03-29 17:17:02 得分 0

数据库的查询条件最好不要用中文,很麻烦的!Top

26 楼mfc2003(抗战二十年(november rain))回复于 2005-03-29 17:24:24 得分 0

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

27 楼liliescn(谁人打的太极拳?)回复于 2005-03-29 17:32:09 得分 0

关注中。。。Top

28 楼java_ak47(精通EJB)回复于 2005-03-29 17:35:30 得分 0

支持Top

29 楼su27007(人外有人,天外有天)回复于 2005-03-29 17:40:22 得分 0

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

30 楼mfc2003(抗战二十年(november rain))回复于 2005-03-29 17:48:35 得分 0

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

31 楼ziteng1(籽疼)回复于 2005-03-29 17:51:36 得分 5

既然是编码问题就把sql转码试试  
  用  
  String   sqlparameter   =   new   String(partname.getBytes("iso-8859-1"),   "gb2312");  
  或反过来试试  
  String   sqlparameter   =   new   String(partname.getBytes("gb2312"),   "iso-8859-1");Top

32 楼ziteng1(籽疼)回复于 2005-03-29 17:58:27 得分 1

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

33 楼su27007(人外有人,天外有天)回复于 2005-03-29 18:26:38 得分 0

写了个测试程序,验证了在应用程序里面,是不用转码的。  
  Top

34 楼xoanon(玮)回复于 2005-03-29 18:40:28 得分 0

行了没!~~Top

35 楼lovexin(魔泪之剑)回复于 2005-03-29 18:56:00 得分 0

结交天下,程序员朋友.  
   
  QQ:   java.web.nt       (4181313)   本群只加高手.且有开发经验者.   新手请不要加.  
          java.web.nt/2   (7346044)   新手乐员.同样也是高手多多.  
           
  本人QQ:87622201      
                                                                                加入的朋友.请写下验证Top

36 楼su27007(人外有人,天外有天)回复于 2005-03-30 09:04:19 得分 0

 
  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为繁体中文的参数  
   
  Top

37 楼angelsmode()回复于 2005-03-30 09:41:37 得分 1

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

38 楼menghuanlang(梦幻狼)回复于 2005-03-30 09:50:34 得分 0

UP一下Top

39 楼jianghuxing(回头看看原来我一无所有)回复于 2005-03-30 09:56:08 得分 0

<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>  
  Top

40 楼wulangzhe(舞狼者)回复于 2005-03-30 11:01:14 得分 0

源码再哪里呀   看不到呀  
  Top

41 楼nbamjzhldm()回复于 2005-03-30 13:07:20 得分 0

upTop

42 楼xiaojun110(海盗船长)回复于 2005-03-30 20:26:15 得分 0

顶芽Top

43 楼sunboyyq(yyq)回复于 2005-03-30 22:05:44 得分 0

好热闹,希望你早点解决Top

44 楼gaochao79(www.informe.cn)回复于 2005-03-30 23:09:55 得分 0

兄弟name是关键字吧?Top

45 楼gaochao79(www.informe.cn)回复于 2005-03-30 23:10:40 得分 0

[c].[name]   试试Top

相关问题

  • 一个 "疑问" , 纳闷 !
  • 纳闷 一个简单的问题
  • 纳闷的问题?
  • 问个已解决的问题,就是很纳闷~
  • 一个关于Win98的问题,牵扯Cpu。。纳闷
  • 一个很纳闷的关于adotable的问题
  • 一个非网站技术性问题,但让我纳闷!。。。
  • 一个既简单又纳闷的action问题.
  • MFC新建类是出现一个纳闷的问题,请教!!!
  • 新手上路就遇到一个纳闷问题

关键词

  • 语句
  • 数据
  • rsx
  • 相册
  • 中文
  • 编码
  • 执行
  • 测试
  • fmstr
  • fmrs

得分解答快速导航

  • 帖主:mfc2003
  • BillyW
  • zhang21cnboy
  • keen1982
  • dophin1003
  • menghuanlang
  • menghuanlang
  • dophin1003
  • xitianjile
  • mhlovers800827
  • su27007
  • wafer_w
  • daimojingdeyu
  • nickyliuk
  • wtiancai
  • su27007
  • ziteng1
  • ziteng1
  • angelsmode

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo