2017-05-31 19 views
-1
<%@ 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()下面)。如何更新JSP文件中的數據庫Mysql?

請幫我解決這個錯誤,我得到的錯誤是: 不能發出數據處理語句executeQuery()。 錯誤連接

謝謝:)

回答

0

的executeQuery()方法不適用於報表類型的更新工作。 對於更新使用的executeUpdate(查詢字符串)

嘗試使用PreparedStatement的,因爲的executeQuery()的更新只能在PreparedStatement的。

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等的保持在更新查詢中使用的值。

希望有幫助!