java - 在servlet中获取sqlexception

标签 java mysql servlets sqlexception

我有这个代码:

    public class cuemath extends HttpServlet{
   /**
    *
    */
   private static final long serialVersionUID = 1L;
   String Q;
   String DOWNLOAD="";

   ArrayList<String> _DOWNLOAD_ ;



   public void doGet (HttpServletRequest req,
                   HttpServletResponse res)
   throws ServletException, IOException
   {
     PrintWriter out = res.getWriter();

   try{Connection myCon;


   _DOWNLOAD_ =new ArrayList<String>();



   Statement myStmt;

   String userName = "xxxx";
   String password = "xxxxxxxx";
   String url= "jdbc:mysql://localhost:3306/maths?user="
   +userName
   +"&password="
   +password;

   Class.forName ("com.mysql.jdbc.Driver").newInstance ();



   myCon = DriverManager.getConnection (url);


   myStmt = myCon.createStatement();
   ResultSet rs;

   String pm=req.getParameter("LessonId").trim();
   int p=Integer.parseInt(pm);

   String query="select * from lessons where LESSONS_ID="+p;
   rs= myStmt.executeQuery(query);

   out.println("<CUEMATH>");
   out.println("<lessonid>");


           out.println(rs.getString("LESSONS_ID"));

   out.println("</lessonid>");

   out.println("<lessontext>");

           out.println(replaceTags(rs.getString("LESSONS_TEXT")));

   out.println("</lessontext>");
   out.println("</CUEMATH>");

   }
   catch (Exception e) {
        e.printStackTrace();
}
   }
    private  String replaceTags(String Input){

           if(!Input.equals(null)){

                   String one =">";
                   String two ="<";
                   String five ="\n";
                   String seven ="\\t";

                   String three ="&gt;";
                   String four ="&lt;";
                   String six = "backslash";
                   String eight="tabspace";


                   Input = Input.replaceAll(one, three);
                   Input = Input.replaceAll(two, four);
                   Input = Input.replaceAll(five, six);
                   Input = Input.replaceAll(seven, eight);



                   Input=Input.replaceAll(five, six);
                   Input = Input.replaceAll(one, three);
                   Input = Input.replaceAll(two, four);


                   Input=Input.replaceAll(five, six);
                   return Input;


           }
           else
                   return "";


   }

}

我收到此错误日志:

               java.sql.SQLException
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:815)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5528)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5448)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5488)
at cue.math.cuemath.doGet(cuemath.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:189)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:91)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:92)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:325)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

我正在从数据库值生成 xml。 我是新手,有人可以帮我解决这个问题吗?

最佳答案

在开始从 ResultSet 对象检索结果之前,您应该添加对 rs.next() 的调用 此调用返回一个 boolean 值来指示是否有更多行可用(在本例中为第一行),并将内部结果集指针移动到下一行结果(在本例中为第一行) )。

通常,您会在代码中看到这一点:

if (rs.next())
{
  // retrieve results from rs object
}

或多行

while (rs.next())
{
  // each iteration through this loop
  // is a separate result row...
}

关于java - 在servlet中获取sqlexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679012/

相关文章:

mysql - 在循环中使用 php mail() 函数发送 +-200 封电子邮件

java - 如何在 Spring 上传文件?

Java - 日期保存为前一天

java - 在 Java 中仅打印用户提交的字符串中的 12 个字符

php - 按日期范围对数据进行分组并以表格形式显示查询结果

使用索引时,Mysql Explain Query 类型为 "ALL"

java - 调用 java WebServlet 时收到 Ajax 错误 404

java - ThreadSafeClientConnManager 不是多线程

java - 系统升级后jvm崩溃

java - 如何通过索引随机访问 O(1) 排序集