int Cid = 0;
        //float price = 0.0F;
        String HtmlStr = "";
        String catalogName = handle.getString(request, "catalogName");
        String ParCataName = catalogName;
        catalogName = handle.GBK2ISO(catalogName);
        try
        {
            String SqlStr1 = "SELECT * FROM " + tb_shop_catalog + " WHERE title = '" + catalogName + "'";
            ResultSet rs1 = dbconn.ExeQuery(SqlStr1);
            if(rs1.next())
            {
                Cid = rs1.getInt("id");
            }
            String SqlStr2 = "SELECT * FROM " + tb_shop_catalog + " WHERE parentid = " + Cid + " ORDER BY id DESC";
            for(ResultSet rs2 = dbconn.ExeQuery(SqlStr2); rs2.next();)
            {
                int SubCid = rs2.getInt("id");
                String SubCataName = rs2.getString("title");
                HtmlStr = HtmlStr + "<table width=97% border=0 cellspacing=0 cellpadding=4>\n";
                HtmlStr = HtmlStr + "<tr>\n";
                HtmlStr = HtmlStr + "<td colspan=2 bgcolor=ccccff class=line1>" + ParCataName + " -&gt; <a href=../product_sys/DetailCatalog.jsp?Cid=" + SubCid + "&Catalog_f=" + ParCataName + "&Catalog_s=" + SubCataName + ">" + SubCataName + "</a></td>\n";
                HtmlStr = HtmlStr + "</tr>\n";
                String SqlStr3 = "SELECT * FROM " + tb_shop_product_info + " WHERE catalog_id = " + SubCid + " ORDER BY id DESC";
                for(ResultSet rs3 = dbconn.ExeQuery(SqlStr3); rs3.next();)
                {
                    String ProName = rs3.getString("name");
                    float price;
                    price = rs3.getFloat("price");
                    int pid = rs3.getInt("id");
                    HtmlStr = HtmlStr + "<tr bgcolor=eeeeee>\n";
                    HtmlStr = HtmlStr + "<td><a href=../../DetailProInfo.jsp?Pid=" + pid + ">" + ProName + "</a></td><td align=center valign=middle>\u5E02\u573A\u4EF7\uFF1A<font color=red>" +
"\uFFE5<span class=xiexian>"
 + price + "</span></font> \u4F1A\u5458\u4EF7\uFF1A<font color=red>\uFFE5" + rs3.getFloat("member_price") + "</font></td>\n";
                    HtmlStr = HtmlStr + "</tr>\n";
                }                HtmlStr = HtmlStr + "</table>\n";
                HtmlStr = HtmlStr + "<br>\n";
            }            dbconn.CloseConn();
        }
        catch(SQLException ex)
        {
            System.err.println("aq.executeQuery:" + ex.getMessage()+"ListDetailType");
        }
        return HtmlStr;

解决方案 »

  1.   

    int Cid = 0;
            //float price = 0.0F;
            String HtmlStr = "";//这是返回的String
            //catalogName是request输入的文字
            String catalogName = handle.getString(request, "catalogName");
            
            String ParCataName = catalogName;//保留
            catalogName = handle.GBK2ISO(catalogName);//调用函数
            try
            {
                String SqlStr1 = "SELECT * FROM " + tb_shop_catalog + " WHERE title = '" + catalogName + "'";//在表tb_shop_catalog中找title为catalogName的项
                ResultSet rs1 = dbconn.ExeQuery(SqlStr1);
                if(rs1.next())
                {
                    Cid = rs1.getInt("id");//得到id
                }
                String SqlStr2 = "SELECT * FROM " + tb_shop_catalog + " WHERE parentid = " + Cid + " ORDER BY id DESC";//得到以id为父目录的下一层id,下面的也没什么必要看了,主要是Cid一直不能出现正确的,只会是初始的那个,谢谢!
      

  2.   

    for(ResultSet rs2 = dbconn.ExeQuery(SqlStr2); rs2.next();)
    for(ResultSet rs3 = dbconn.ExeQuery(SqlStr3); rs3.next();)
    这两句有问题,你这么写的意思是在for循环结束前调用rs.next(),但实际上应该是一进入for循环就调用,不然用rs.getInt是取不到值的你应该这么写:
    ResultSet rs2 = dbconn.ExeQuery(SqlStr2); 
    while(rs2.next()){
    //dosomething
    }
      

  3.   

    谢谢帮助,
    问题主要是在前面Cid上,不能得到准确的值。
    还有个问题是输入 &catalogName=热爱人民
    可是输出ParCataName却是乱码了,为什么呢?谢谢。
      

  4.   

    问题已解决,原来request是ISO字符。还有个问题为什么正确的页面有时能出来有时不能正确显示?谢谢各位,明天结帖
      

  5.   

    后面的问题还是没有解决,如果那位大哥能帮忙,请发邮件到[email protected]
    谢谢