【问题标题】:Update query not working properly in servlet更新查询在 servlet 中无法正常工作
【发布时间】:2018-03-07 08:06:31
【问题描述】:

大家好,当我尝试更新数据库中的任何记录时,它显示已成功更新,但是当我检查数据库时它尚未更新。

代码中没有错误,但它不起作用。任何人都可以研究一下并指出代码中的问题。

我正在尝试使用电话号码作为唯一值来更新用户名。

谢谢。

Updatelogin.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>

<body>
<form action ="update" method="post">
       phone : <input type ="text" name ="phone" /> </br> 
 Username : <input type ="text" name ="uname"/> </br>


<input type ="submit" value = "update">

</form>
</body>
</html>

Update.java

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

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

/**
 * Servlet implementation class update
 */
@WebServlet("/update")
public class update extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public update() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    public void doGet(HttpServletRequest request,HttpServletResponse response) 
            throws IOException,ServletException{
                processRequset (request,response);
            }

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

                processRequset (request,response);
            }

            public void processRequset(HttpServletRequest request,HttpServletResponse response) 
                    throws IOException,ServletException{
                response.setContentType("text/html;charset=UTF-8");

                String phone =request.getParameter("phone");
                String username =request.getParameter("uname");

                PrintWriter out = response.getWriter();


        try {




            Class.forName("com.mysql.jdbc.Driver");  
            Connection con=DriverManager.getConnection(  
            "jdbc:mysql://localhost:3306/register","root","toor");  

            PreparedStatement pstmt=con.prepareStatement(  
            "update headwy set uname =? where phone=?"); 
             pstmt.setString(1,phone);
             pstmt.setString(2,username);


             pstmt.executeUpdate();  

            out.print("You are successfully update...");  
            pstmt.close();
            con.close();

        }
          catch (Exception e2) {System.out.println(e2);
           }  
            }
}

【问题讨论】:

  • @ScaryWombat 实际上,自动提交通常默认设置为 true(我认为),因此 OP 可能不必调用commit()。但除此之外,我想不出为什么更新不会抛出异常,但数据没有显示出来。

标签: java mysql servlets jdbc sql-update


【解决方案1】:

您似乎错误地设置了 Preparedstatement 参数

pstmt.setString(1,phone);
pstmt.setString(2,username);

应该是

pstmt.setString(1,username);
pstmt.setString(2,phone);

检查您的查询“update headwy set uname =? where phone=?”);

【讨论】:

    【解决方案2】:

    您在查询中缺少参数的顺序第一个参数需要用户名值,第二个参数需要电话号码值。所以,改变参数的顺序就行了

    PreparedStatement pstmt=con.prepareStatement(  
                "update headwy set uname =? where phone=?"); 
                 pstmt.setString(1,username);
                 pstmt.setString(2,phone);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      相关资源
      最近更新 更多