【问题标题】:How can i update database Mysql in JSP file?如何在 JSP 文件中更新数据库 Mysql?
【发布时间】:2017-05-31 12:51:43
【问题描述】:
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%  

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();

        Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/members", "root", "");


        Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

        String s1 = request.getParameter("fname");
        String s2 = (String)request.getParameter("password");
        String mySQL = "SELECT * FROM   allusers WHERE fname='" + s1 +"' and password='" + s2 + "'";


        ResultSet oRS = st.executeQuery(mySQL);
        if (oRS.next())
        {
            //System.out.print("Hey");
            String s3 = (String)request.getParameter("lname");
            String s4 = (String)request.getParameter("mail");
            String s5 = (String)request.getParameter("gender");
            String s6 = (String)request.getParameter("religen");
            oRS.moveToInsertRow();
            mySQL = "UPDATE allusers SET lname='"+ s3 +"', mail='"+ s4 +"', gender='"+ s5 +"', religen='"+ s6 +"' WHERE fname='"+ s1 +"' ";
            oRS = st.executeQuery(mySQL);
            response.sendRedirect("didthat.jsp");
        }
        else {
            response.sendRedirect("notreg.jsp");
        } 
    } catch (Exception e) {

        System.out.println(e.getMessage());
        System.out.println("Error in connecting");
    } // the connection is closed

%>

我这样做了,但它不起作用,所以我放了标志,错误在 mySQL 行中(低于oRS.moveToInsetRow())。

请帮我解决这个错误,我得到的错误是: 无法使用executeQuery() 发出数据操作语句。 连接错误

谢谢你:)

【问题讨论】:

    标签: java mysql database jsp


    【解决方案1】:

    executeQuery() 方法不适用于 Statement 类型的更新。 对于更新使用 executeUpdate(String query)

    尝试使用 PreparedStatement,因为 executeQuery() 仅适用于 PreparedStatement 进行更新。

    【讨论】:

      【解决方案2】:

      而不是下面的行,

      String mySQL = "UPDATE allusers SET lname='"+ s3 +"', mail='"+ s4 +"', gender='"+ s5 +"', religen='"+ s6 +"' WHERE fname='"+ s1 +"' ";
      ResultSet oRS = st.executeQuery(mySQL);
      

      您应该使用PreparedStatement 的实例: PreparedStatement st = null;

      String mySQL = "UPDATE allusers SET lname=?, mail=?, gender=? religen=? WHERE fname=? ";
      
      st = connection.prepareStatement(mySQL);
      st.setString(1, s3);
      st.setString(2, s4);
      st.setString(3, s5);
      st.setString(4, s6);
      st.setString(5, s1);
      
      st.executeUpdate(mySQL);
      

      上面的代码假定所有列的类型都是String,变量s1、s2等保存更新查询中要使用的值。

      希望对你有帮助!!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2015-06-11
        • 2021-01-04
        相关资源
        最近更新 更多