2013-06-26 2 views
1

안녕하세요, jdbc를 사용하여 SQL 데이터베이스에 값을 삽입하려고합니다. 현재 코드는 SQL DB에 연결하고 쿼리 할 수 ​​있습니다. executeupdate를 사용하여 값을 삽입하고 있습니다.이 코드는 오류를주지 않습니다.하지만 실행하기 전과 실행하기 전에 코드를 커밋하지 않아도 SQL DB에 값이 삽입되지 않습니다. 어떻게 DB에 값을 삽입 할 수 있습니까 ???삽입 된 행이 JDBC를 통해 데이터베이스에서 업데이트되지 않습니다.

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 oracle.jdbc.driver.*;  

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


    public class Servlet1 extends HttpServlet {  
protected void doGet(HttpServletRequest request,HttpServletResponse response)  
throws ServletException,IOException  
{  
    String p1=request.getParameter("param1");  
    String p2=request.getParameter("param2");  
    String p3=request.getParameter("param3");  
    String p4=request.getParameter("param4");  
    String p5=request.getParameter("param5");  
    String sql="INSERT INTO EMPLOYEES (Id,Name,Post,Salary,Location) VALUES('" + p1 + "','" + p2 + " ','" + p3 + "','" + p4 + " ','" + p5 + " ')";  
    try  
    {  
     Class.forName("oracle.jdbc.driver.OracleDriver");  
    }  
    catch(ClassNotFoundException ex)  
    {  
     ex.printStackTrace();  
    }  
    Connection con=null;  
    Statement stmt=null;  
    try  
    {  
     con =  DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/XE","test","Gari!2563");  
     stmt=con.createStatement();  
     stmt.executeUpdate(sql);  
     con.setAutoCommit(true);  
    }  
    catch(SQLException ex)  
    {  
     ex.printStackTrace();  
    }  
    finally  
    {  
     try  
     {  
     if(stmt!=null)  
     {  
      stmt.close();  
      stmt=null;  
     }  
    }  
    catch(SQLException ex)  
    {  
     ex.printStackTrace();  
    }  
    try  
    {  
     if(con!=null)  
     {  
      con.close();  
      con=null;  
     }  
    }  
    catch(SQLException ex)  
    {  
     ex.printStackTrace();  
    }  
}  
PrintWriter out = response.getWriter();  
out.println("done");  
}  

} 내가 jdk1.7를 사용하고

, 오라클 DB XE 11.2.0. 아파치 바람둥이 7 일식 주노 EE 에디션.

+3

이 질문을하기 전에 ([여기] (http://stackoverflow.com/questions/17318449/jdbc-connecting-with-oracle-11g)) 물어보십시오. 다음에 새로운 질문 대신 기존 질문을 업데이트하십시오. 좀 더 자세한 정보를 제공 할 때 이전 것을 닫도록 투표했습니다. –

+0

좋아, 내가 여기서 새로운 것을 알았어.하지만 거의 6 시간을 낭비하고 도와 줘. –

+0

응용 프로그램 서버의 로그를 확인하고 stacktrace를 인쇄 한 다음 예외를 무시하면 쿼리가 전혀 실행되지 않았다는 것을 의미 할 수 있습니다. –

답변

1

코드가 잘못되었습니다.

자동 커밋 모드를 사용하려는 경우 쿼리가 실행되기 전에 (일반적으로 getConnection() 후에) 설정해야합니다.

자동 커밋을 사용하지 않으려면 명령문을 실행 한 후에 명시 적 con.commit()이 필요합니다. 자세한 내용은 at the documentation을 보길 원할 수 있습니다.

jdbc 드라이버가 누락되어 예외가 수정되었으므로 이제 작동합니다.

+0

thanx sir 방금 con.setAutoCommit을 옮겼습니다 (true); 연결하기 전에 모든 행이 실제로 DB에 삽입됩니다. –

관련 문제