插入的行不通过JDBC在数据库中更新

时间:2013-06-26 12:41:16

标签: oracle jdbc insert sql-update commit

您正在尝试使用jdbc将值插入SQL数据库。当前代码能够连接和查询sql DB。我正在使用executeupdate来插入值。这段代码没有给出任何错误。但是,即使我累了在执行之后和之前提交代码,也没有将值插入到SQL DB中。如何将值插入DB ???

    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 DB XE 11.2.0。 Apache tomcat 7 eclipse juno EE版。

1 个答案:

答案 0 :(得分:1)

似乎代码错了。

如果要使用自动提交模式,则应在执行查询之前设置它(通常在getConnection()之后) - 而不是在执行查询之后。

如果您不想使用自动提交,则在执行语句后需要显式的con.commit()。您可能需要查看at the documentation以获取更多信息。

由于您因缺少jdbc驱动程序而修复了异常,因此它现在可以正常工作。