老是出错,数据读取出错!

zhangdong2009 2009-05-12 07:00:32
问题描述:
假如在上一个页面传来一个参数:
请输入年级:<input type="text" name="check" id="check" >
在当前页面读取:

<table>
<%
//数据库已经连接
String check =request.getParameter("check");
String sql="select count(*) as total from students where grade="+check;
rs =smt.executeQuery(sql);
while(rs.next()){
%>
<tr>
<td>
<%=rs.getString("total")%>
</td>
</tr>
</table>
<%}
conn.close();
rs.close();
smt.close();
%>
老是出错,请高手指教,加分!
...全文
238 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljfsun6688 2009-05-13
  • 打赏
  • 举报
回复
乱码???
sunggwei 2009-05-13
  • 打赏
  • 举报
回复
rs cannot be resolved
这不是说你的rs没有初始化吗么
beijingpz 2009-05-13
  • 打赏
  • 举报
回复
代码存在太多的问题

try{
............
}catch(Exception e){
......
}finally{
try{
if(rs!=null){
rs.close();
rs=null;
}
if(st!=null){
st.close();
st=null;
}
}catch(){}finally{if(conn!=null&&!conn.isClosed()){conn.close();conn=null;}}
}


请自行加上该捕获的异常

另外,jsp是由servlet输出的,所以乱码是正常的,最好用filter解决一下,还有你的rs变量没有声明
「已注销」 2009-05-13
  • 打赏
  • 举报
回复
String check =request.getParameter("check");

我感觉像 得到的 check 乱码了
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '???ê??' at line 1
tjzero_sapce 2009-05-12
  • 打赏
  • 举报
回复
建议楼主拿些错误提示信息出来 , 我看你这条sql语句是查询出的int型的数据 ,用rs.getString("") 好像不合适吧
xiguagege 2009-05-12
  • 打赏
  • 举报
回复
如果check本来就是一个string类型,那么就没有必要加上引号

给楼主两个建议
1,在执行sql语句前,把生成的sql语句打印出来看看
2,,先不使用参数,直接给check一个固定的值,检查数据库工作是否正常
yuanjun_xf 2009-05-12
  • 打赏
  • 举报
回复
用try{}catch(Exception e){e.printStackTrace();}把你写代码都包起来;这样可以定位具体哪行出错!
恩。
victorxiang 2009-05-12
  • 打赏
  • 举报
回复
建议:楼主
1、用try{}catch(Exception e){e.printStackTrace();}把你写代码都包起来;这样可以定位具体哪行出错!
2、重点检查数据连接conn是否获取了。
3、建议将conn,stmt,rs等资源的清理放在finnally里处理
tyuiouio 2009-05-12
  • 打赏
  • 举报
回复
对不起,刚才写错了,应该是 '"+check+"'";
tyuiouio 2009-05-12
  • 打赏
  • 举报
回复

String check =request.getParameter("check");
sql="select count(Snumber) as total1 from students where sfjf=1 and grade ="'+check+'"";
rs =smt.executeQuery(sql);

tyuiouio 2009-05-12
  • 打赏
  • 举报
回复

String check =request.getParameter("check");
sql="select count(Snumber) as total1 from students where sfjf=1 and grade ="'+check+'"";
rs =smt.executeQuery(sql);

chaluhe001 2009-05-12
  • 打赏
  • 举报
回复
小弟 愚见
String check =request.getParameter("check");

sql="select count(Snumber) as total1 from students where sfjf=1 and grade ="+check;
rs =smt.executeQuery(sql);
应该 这样写吧
String check =request.getParameter("check");

sql="select count(Snumber) as total1 from students where sfjf=1 and grade ="'+check+'"";
rs =smt.executeQuery(sql);
应该没问题 了 报的错事sql语句出问题了
Dantin 2009-05-12
  • 打赏
  • 举报
回复
关注一下
HUXINLINCOLN 2009-05-12
  • 打赏
  • 举报
回复
check是不是要加引号啊 'check',楼主试试看呢
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhangdong2009 的帖子:]
问题描述:
假如在上一个页面传来一个参数:
请输入年级: <input type="text" name="check" id="check" >
在当前页面读取:

<table>
<%
//数据库已经连接
String check =request.getParameter("check");
String sql="select count(*) as total from students where grade="+check;
rs =smt.executeQuery(sql);
while(rs.next()){%>
<tr>
<td>
<%=rs.getString("total")%>
</td>
</tr>
</table>

[/Quote]
楼主把报的错误贴出来看看

单从上面代码来看,错误很可能是因为你查询获取数据时,类型不匹配造成的
String check =request.getParameter("check");
String sql="select count(*) as total from students where grade="+check;
你的check是String类型,而你的数据库中的字段类型是不是与之匹配啊
楼主检查一下

要是不行再说,关注
  • 打赏
  • 举报
回复
兄弟
不知道出的是什么错??

conn.close();
rs.close();
smt.close();

数据库关闭的顺序建议是:

rs.close();
smt.close();
conn.close();
zhangdong2009 2009-05-12
  • 打赏
  • 举报
回复
加上catch后捕捉到的信息:
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 14 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolved

An error occurred at line: 31 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolved

An error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolved

An error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
smt cannot be resolved

An error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
conn cannot be resolved


org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 14 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolved

An error occurred at line: 31 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolved

An error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolved

An error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
smt cannot be resolved

An error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
conn cannot be resolved


org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:414)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

zhangdong2009 2009-05-12
  • 打赏
  • 举报
回复
原代码:

<body background="image/bkic017.gif">
<%

Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://localhost/charge?user=root&password=123";
Connection conn =DriverManager.getConnection(url);
Statement smt =conn.createStatement();
ResultSet rs;
String sql;
String check =request.getParameter("check");

sql="select count(Snumber) as total1 from students where sfjf=1 and grade ="+check;
rs =smt.executeQuery(sql);
while(rs.next()){
%>
本年度所交总金额为: <%=rs.getFloat("total1")%>
</body>
</html>
<%}

rs.close();
smt.close();
conn.close();
%>


出错信息:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Exception in JSP: /countjf.jsp:25

22: String check =request.getParameter("check");
23:
24: sql="select count(Snumber) as total1 from students where sfjf=1 and grade ="+check;
25: rs =smt.executeQuery(sql);
26: while(rs.next()){
27: %>
28: 本年度所交总金额为: <%=rs.getFloat("total1")%>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

javax.servlet.ServletException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '???ê??' at line 1
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.countjf_jsp._jspService(countjf_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '???ê??' at line 1
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
com.mysql.jdbc.Connection.execSQL(Connection.java:2998)
com.mysql.jdbc.Connection.execSQL(Connection.java:2927)
com.mysql.jdbc.Statement.executeQuery(Statement.java:956)
org.apache.jsp.countjf_jsp._jspService(countjf_jsp.java:70)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

67,511

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧