java.sql.SQLSyntaxErrorException : at oracle. jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java :450) at oracle. jdbc.dr

标签 java eclipse oracle servlets jdbc

我刚刚开始使用servlet学习jdbc,我在oracle数据库中有一个表,其中包含学生的结果。我想在搜索卷号时获取详细信息。我的代码在这里

enter image description here

index.html

<form action="ResultServlet">
    Enter your Rollno:<input type="text" name="roll" /><br /> <input
        type="submit" value="search" />
</form>

ResultServlet.java

  package atulrai;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
 import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

 import javax.servlet.ServletException;
  import javax.servlet.annotation.WebServlet;
  import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

  /**
   * Servlet implementation class ResultServlet
   */
 @WebServlet("/ResultServlet")
 public class ResultServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    String rollno = request.getParameter("roll");
    int roll = Integer.valueOf(rollno);

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con = DriverManager.getConnection(
                "jdbc:oracle:thin:@localhost:1521:oracle12c", "AtulRai",
                "atulrai");

        PreparedStatement ps = con
                .prepareStatement("select * from result where rollno=?");
        ps.setInt(1, roll);

        out.print("<table width=50% border=1>");
        out.print("<caption>Result:</caption>");

        ResultSet rs = ps.executeQuery();

        /* Printing column names */
        ResultSetMetaData rsmd = rs.getMetaData();
        int total = rsmd.getColumnCount();
        out.print("<tr>");
        for (int i = 1; i <= total; i++) {
            out.print("<th>" + rsmd.getColumnName(i) + "</th>");
        }

        out.print("</tr>");

        /* Printing result */

        while (rs.next()) {
            out.print("<tr><td>" + rs.getInt(1) + "</td><td>"
                    + rs.getString(2) + "</td><td>" + rs.getString(3)
                    + "</td><td>" + rs.getString(4) + "</td></tr>");

        }

        out.print("</table>");

    } catch (Exception e2) {
        e2.printStackTrace();
    }

    finally {
        out.close();
    }

}

}

当我以 html 形式输入卷号时,它会抛出一些我无法理解的异常。如有任何帮助,请

这里有错误

 java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:774)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4845)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1501)
at atulrai.ResultServlet.doGet(ResultServlet.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

最佳答案

从您共享的图像来看,该表似乎是用双引号(")创建的,使名称区分大小写。如果是这种情况,您应该以这种方式引用它也在 select 语句中:

PreparedStatement ps = 
    con.prepareStatement("select * from \"result\" where rollno=?");

关于java.sql.SQLSyntaxErrorException : at oracle. jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java :450) at oracle. jdbc.dr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32956164/

相关文章:

android: 无法运行程序 CreateProcess error=5,访问被拒绝

java - 如何将 OSGI 包添加到 Eclipse RCP 项目

mysql - 值是否在值列表中? (Oracle SQL)

java - 替换 HTML 中的所有 URL

javascript - 使用axios创建post请求后,header值在服务器端返回null

c++ - 如何教 Eclipse 一些礼仪

java - 如何使用 JDBC 执行过程

sql - ORACLE/SQL - 连接3个并非全部互连的表

java - JScrollPane JPanel 和布局

javascript - 使用 postman 向运行 SparkJava 的本地主机服务器发出请求,但不能使用浏览器中的 javascript