Servlets 如何使用Javaservlet在MySql中插入值

Servlets 如何使用Javaservlet在MySql中插入值,servlets,Servlets,我在这里添加完整的代码。检查下面我用来在MySql中插入值的代码。执行程序时,不插入值 数据库datab.java Statement st=null; Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employee","root", "1234"); st=con.createStatement

我在这里添加完整的代码。检查下面我用来在MySql中插入值的代码。执行程序时,不插入值

数据库datab.java

Statement st=null;
Class.forName("com.mysql.jdbc.Driver");
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/employee","root", "1234");
     st=con.createStatement();
Servlet代码

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

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    String s = "http://localhost:" + request.getServerPort() + ""
            + request.getContextPath()+"/Emp";

String a,b,c,d,e;

    try {
         a=request.getParameter("t1");
        b=request.getParameter("t2");
         c=request.getParameter("t3");
          d=request.getParameter("t4");
          e=request.getParameter("t5");
         System.out.println(a);
        datab dt = new datab();

     dt.st.execute("insert into employee(eid,emp_name,emp_age,emp_desig,emp_salary) values(a,b,c,d,e)");

     response.sendRedirect(s);
     } catch(Exception ex){ex.printStackTrace();
        out.close();
    }          
} 

假设a,b,c,d,e都是字符串 替换

insert into employee(eid,emp_name,emp_age,emp_desig,emp_salary) values(a,b,c,d,e)

而不是像这样的东西

dt.st.execute
String query = "insert into employee(eid,emp_name,emp_age,emp_desig,emp_salary) 
    values(?,?,?,?,?)"
PreparedStatement statement = connection.prepareStatement(query);
statement.setString(1, a);
statement.setString(2, b);
statement.setString(3, c);
statement.setString(4, d);
statement.setString(5, e);
statement.executeUpdate();
您不需要让
datab
类返回
connectionObject
并使用该对象创建
语句
对象并执行语句

请停止使用语句,并利用像这样的PreparedStatement

dt.st.execute
String query = "insert into employee(eid,emp_name,emp_age,emp_desig,emp_salary) 
    values(?,?,?,?,?)"
PreparedStatement statement = connection.prepareStatement(query);
statement.setString(1, a);
statement.setString(2, b);
statement.setString(3, c);
statement.setString(4, d);
statement.setString(5, e);
statement.executeUpdate();

ex.printStackTrace()
替换为
抛出新的RuntimeException(ex)
,然后读取错误消息和得到的堆栈跟踪。您的SQL查询显然语法不正确(数据库的a、b、c、d和e是什么?)。然后读。事实上,请阅读整个JDBC教程,因为您打开但从不关闭语句和连接的方式非常糟糕。@JB Nizet。。。错误是。。。。。java.lang.RuntimeException:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:field list中的未知列'a'AddEmp.processRequest(AddEmp.java:57)AddEmp.doPost(AddEmp.java:87)我告诉你了什么。。。?现在读。你是正确的。。。。dt.st.execute(“在员工(eid、emp_姓名、emp_年龄、emp_设计、emp_薪水)中插入值(“+a+”、“+b+”、“+c+”、“+d+”、“+e+”))”)。。。这是有效的…不要只读第一部分请阅读整个答案,并遵循这一点,而不是第一部分part@SparkOn下次,甚至不要建议第一条路。新手不可避免地选择这样做,因为它比第二种更容易理解。他们没有意识到这也是完全错误的。我的2美分。