问题描述:
假如在上一个页面传来一个参数:
请输入年级:<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();
%>
老是出错,请高手指教,加分!
假如在上一个页面传来一个参数:
请输入年级:<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();
%>
老是出错,请高手指教,加分!
不知道出的是什么错??conn.close();
rs.close();
smt.close(); 数据库关闭的顺序建议是:rs.close();
smt.close();
conn.close();
String check =request.getParameter("check");
String sql="select count(*) as total from students where grade="+check;
你的check是String类型,而你的数据库中的字段类型是不是与之匹配啊
楼主检查一下要是不行再说,关注
1、用try{}catch(Exception e){e.printStackTrace();}把你写代码都包起来;这样可以定位具体哪行出错!
2、重点检查数据连接conn是否获取了。
3、建议将conn,stmt,rs等资源的清理放在finnally里处理
恩。
<% 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 reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Exception in JSP: /countjf.jsp:2522: 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.
org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 14 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 31 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
smt cannot be resolvedAn 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 JSPAn error occurred at line: 14 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 31 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
smt cannot be resolvedAn 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.
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语句出问题了
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);
1,在执行sql语句前,把生成的sql语句打印出来看看
2,,先不使用参数,直接给check一个固定的值,检查数据库工作是否正常
这不是说你的rs没有初始化吗么
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
............
}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变量没有声明