<%@ 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()
发出数据操作语句。
连接错误
答案 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等包含要在更新查询中使用的值。
希望有所帮助!!!