2013-06-26 111 views
1

您好,我試圖使用jdbc將值插入到SQL數據庫中。當前的代碼能夠連接和查詢sql數據庫。我正在使用executeupdate來插入值。這個代碼沒有給出任何錯誤。但是值並沒有被插入到SQL 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,Oracle數據庫XE 11.2.0。 Apache tomcat 7 eclipse juno EE版。

+3

您在([here](http://stackoverflow.com/questions/17318449/jdbc-connecting-with-oracle-11g))之前詢問過此問題。下次請更新現有問題,而不是要求提供新問題。我已經投票關閉了舊的,因爲你在這裏提供了更多的細節。 –

+0

好吧,我會告訴你,我在這裏新的dat.But幫助我與這浪費了近6個小時。 –

+0

你是否檢查過你的應用服務器的日誌,你正在打印堆棧跟蹤,然後忽略這個異常,這可能意味着你根本沒有執行任何查詢 –

回答

1

看來代碼是錯誤的。

如果你想使用自動提交模式,那麼它應該在執行查詢之前(通常是在getConnection()之後)設置 - 而不是一旦執行查詢。

如果您不想使用自動提交,那麼在語句執行後您需要顯式的con.commit()。你可能想看看at the documentation瞭解更多信息。

由於您已經修復了由於缺少jdbc驅動程序而導致的異常,它現在應該可以工作。

+0

thanx先生我剛剛移動con.setAutoCommit(true);連接之前,它真的有效,所有的行都被插入到數據庫中。 –