2015-10-05 3 views
0

Я только начал изучать jdbc с сервлетом, и у меня есть таблица в базе данных оракула, которая содержат результат студентов. Я хочу получить деталь во время поиска по рулону. мой код здесьjava.sql.SQLSyntaxErrorException: at oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:450) at oracle.jdbc.dr

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) 
+1

Действительно ли существует 'result' таблицы? Имеются ли у пользователя «AtulRai», которые вы используете для подключения, права на запрос? – Mureinik

+0

есть. У меня есть пользователь AtulRai и результат таблицы. Предположим, что эта проблема возникла в результате создания привилегий, то как я могу получить привилегии для пользователя AtulRai? –

+0

Является ли таблица в схеме этого пользователя? – Mureinik

ответ

1

Из образа вы поделились, кажется, что таблица была создана в двойных кавычках ("), что делает случае имя регистра. Если это так, то вам следует обратиться к нему таким образом в select заявлении тоже:

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

его не работает –

+0

CREATE TABLE "РЕЗУЛЬТАТ" ("ROLLNO" НОМЕР, "NAME" VARCHAR2 (40), "РЕЗУЛЬТАТ" VARCHAR2 (40), "GRADE" VARCHAR2 (40), CONSTRAINT "RESULT_PK" ОСНОВНОЙ КЛЮЧ («ROLLNO») ENABLE ) –

Смежные вопросы