我有这个代码:
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 =">";
String four ="<";
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/