2014-12-14 2 views
1
html file 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>hi</title> 
</head> 
    <body> 
    <form action="Try.java" method="get" > 
    name: <input type="text" name="name" ></input> 
    <input type="submit" name="submit" value="submit" style="color: blue"> 
    </form> 
    </body> 
    </html> 



servlet code 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class Try extends HttpServlet { 

    private static final long 
    serialVersionUID = 1L;  
    Connection con; 
    Statement stm; 

    public Try() { 
    super(); 
      } 


protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, 
IOException { 

    res.setContentType("text/html");  
    PrintWriter out=res.getWriter(); 
    try {  
     String pname=req.getParameter("name"); 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     System.out.println("driver loaded"); 
     String url="jdbc:oracle:thin:@an-PC:1525/orclg"; 
     Connection 
     con=DriverManager.getConnection(url,"user","pass"); 
     out.println("connection"+con);  
     Statement stm=con.createStatement(); 
     String sql="Insert into name(names)values('"+pname+"')";  
     stm.executeUpdate(sql); 
     System.out.println("Record inserted.....");  
     con.close(); 
    } catch (ClassNotFoundException e) {   
     // TODO Auto-generated catch block   
     e.printStackTrace(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block  
     e.printStackTrace(); } 
     } 

     protected void doPost(HttpServletRequest request,HttpServletResponse response) throws 
     ServletException, IOException { 

    }  
} 
following are the Exceptions 

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver на org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1680) на org.apache.catalina.loader.WebappClassLoader. loadClass (WebappClassLoader.java:1526) на java.lang.Class.forName0 (собственный метод) на java.lang.Class.forName (класс.java:259) на Try.doGet (Try.java:41) в javax.servlet.http.HttpServlet.service (HttpServlet.java:617) в javax.servlet.http.HttpServlet.service (HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain .java: 290) на org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) на org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:233) на org.apache.catalina.core. StandardContextValve.invoke (StandardContextValve.java:191) на org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127) на org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103) на org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) на org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:293) на org.apache.coyote.http11. Http11Processor.process (Http11Processor.java:861) at org.apache.coyote.http11.Http11Protoc ol $ Http11ConnectionHandler.process (Http11Protocol.java:606) at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:489) at java.lang.Thread.run (Thread.java: 745)Почему данные из сервлета не вставлены в базу данных sql?

+0

Предоставить стек Trace! –

+0

("+" 'pname') "? – suenda

+0

" Вставить в имена (имена) значения ("+" 'pname') ", сделать println этой строки, выполнить ее в sqldeveloper (или все, что вы используете для администрирования вашей db), чтобы убедиться, что ваш запрос в порядке. (неправильная таблица? неправильный атрибут?) – suenda

ответ

1

Вы должны научиться интерпретировать трассировки стека. Первая строка вашей трассировки стека означает, что среда выполнения Java не смогла найти класс oracle.jdbc.driver.OracleDriver. Это класс драйвера Oracle JDBC.

Получите Oracle driver JAR и поместите его в папку вашего веб-приложения WEB-INF/lib.

К тому времени: Чтобы предотвратить SQL injection attacks, вы никогда не должны создавать свой SQL с неопределенным параметром запроса с помощью строковых манипуляций. Вместо этого используйте подготовленное заявление. И не забудьте закрыть заявление и совершить транзакцию.

PreparedStatement stm = con.prepareStatement("insert into name (names) values (?)"); 
stm.setString(1, pname); 
stm.executeUpdate(); 
con.commit(); 
stm.close(); 

Это позволит избежать символов, таких как кавычки, автоматически. Кроме того, вы должны проверить значение перед выполнением вставки (например, не более 100 символов, в зависимости от длины столбца имени).

+0

Спасибо ... Он работает Я добавил файл jar. – aam

0

Это утверждение может быть ваш вопрос:

String sql="Insert into name(names)values("+"'pname')"; 

Я думаю, что котировки должны быть следующими:

String sql="Insert into name(names)values('"+pname+"')"; 
Смежные вопросы