如何在JSP文件中更新数据库Mysql?

时间:2017-05-31 12:51:44

标签: java mysql database jsp

<%@ 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()发出数据操作语句。 连接错误

谢谢你:)

2 个答案:

答案 0 :(得分:0)

executeQuery()方法不适用于更新Statement类型。 对于更新,请使用 executeUpdate(字符串查询)

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

答案 1 :(得分:0)

而不是以下行,

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等包含要在更新查询中使用的值。

希望有所帮助!!!