TO: BillyW(阿弥陀佛) 没有错误! 就是没有提取到数据 TO:zhang21cnboy(事了抚衣去,不留身与名)String fmstr="select name from photoinfo where partenname='"+rs.getString("c.name")+"'";//这里得到的fmstr 放到sqleditor中 可以得到数据, out.print(fmstr);/// 然后在IE里把这个打印出来的语句放到sql查询分析器里执行 是可以得到数据的,所以你说的这种情况根本不存在
楼主把 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”); 试试!!
你们别再说 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");
/* 测试 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"进行测试?
别人叫你把sql语句改为c.name as cname你都没试,怎么知道不行
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();
同意rnfc2003的意见,数据库连接没有关闭的缘故
把你的 fmrs.close(); stmtfm.close(); 放到最后再关。
原来问题在这里: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
忘记跟你说了, String sqlparameter = new String(partname.getBytes("iso-8859-1"), "big5"); 这个里面的big5是繁体的字符集,简体的话就用GB2312! 那个ISO-8859-1也可能要换。
to: su27007(人外有人,天外有天) ( 这个我当然知道 仍然无效:
既然是编码问题就把sql转码试试 用 String sqlparameter = new String(partname.getBytes("iso-8859-1"), "gb2312"); 或反过来试试 String sqlparameter = new String(partname.getBytes("gb2312"), "iso-8859-1");
突然想起来,你的库是中文的 不行的话 试试 String sqlparameter = new String(partname.getBytes("gb2312"), "UTF8");
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为繁体中文的参数
个人建议,尽量避免rs循环中再出现另一个rs,即使他们名字不一样,即使他们也不是同一个连接。
<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);
</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>
没有错误!
就是没有提取到数据
TO:zhang21cnboy(事了抚衣去,不留身与名)String fmstr="select name from photoinfo where partenname='"+rs.getString("c.name")+"'";//这里得到的fmstr 放到sqleditor中 可以得到数据,
out.print(fmstr);/// 然后在IE里把这个打印出来的语句放到sql查询分析器里执行 是可以得到数据的,所以你说的这种情况根本不存在
改成 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”); 试试!!
把rs.getString("c.name")换成rs.getString(2)
问题应该是在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");
}
c.name 应该对应于这个表的字段名!
c.name 应该对应于这个表的字段名!补充:把rs.getString("c.name")中的"c.name"换成表的对应的字段名!
<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>
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"进行测试?
第二部分 用"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();
stmtfm.close();
放到最后再关。
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
if(fmrs.next())
{
imgname=fmrs.getString("name");
}
中的if换成while试试看!
如果是false,那么执行fmrs.getString("name")这个方法,肯定是不对的!
蒙了2天 我火了
String fmstr="select name from photoinfo where partenname='kz'";
如果 把partenname='kz' 条件换成中文 就得不到数据
但我从数据库里可以取出中文, 为什么在条件语句里不支持中文??这个怎么解决啊???
String类里面有个方法,
String sqlparameter = new String(partname.getBytes("iso-8859-1"), "big5");
String sqlparameter = new String(partname.getBytes("iso-8859-1"), "big5");
这个里面的big5是繁体的字符集,简体的话就用GB2312!
那个ISO-8859-1也可能要换。
仍然无效:
用
String sqlparameter = new String(partname.getBytes("iso-8859-1"), "gb2312");
或反过来试试
String sqlparameter = new String(partname.getBytes("gb2312"), "iso-8859-1");
不行的话
试试
String sqlparameter = new String(partname.getBytes("gb2312"), "UTF8");
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为繁体中文的参数
<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>