Problem z zapisywaniem danych z formularza w aplikacji JSP

0

Witam ponownie :)
Tym razem problem z insertem w JSP tomcat podaje taki błąd:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /rejestracja.jsp at line 39

36:              }     
37: 
38:              nmax++;            
39:              rs = stmt.executeQuery("insert into Klient values (" + nmax + ",'" + login + "','" + haslo + "','" + imie + "','" + nazwisko + "','" + mail + "','" + telefon + "')");
40:              sesja.setAttribute("logged", "true");
41:              sesja.setAttribute("login", login);
42:              sesja.setAttribute("opcja", "4");


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.servlet.ServletException: java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794)
	org.apache.jsp.rejestracja_jsp._jspService(rejestracja_jsp.java:151)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
	com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:490)
	com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1467)
	org.apache.jsp.rejestracja_jsp._jspService(rejestracja_jsp.java:130)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
 

A to jest cały kod do rejestracji w Aplikacji JSP:

 
   
        <%@ include file = "baza.jsp" %> 
        <% HttpSession sesja = request.getSession(); %>
        <%             
        if (request.getParameter("reglogin").isEmpty() || request.getParameter("reghaslo").isEmpty() || 
            request.getParameter("regimie").isEmpty() || request.getParameter("regnazwisko").isEmpty() ||
            request.getParameter("regtelefon").isEmpty() || request.getParameter("regmail").isEmpty())
        {
           sesja.setAttribute("opcja", "1");   
           sesja.setAttribute("bladrej", "1");             
        }    
        else
        {    
          String login = request.getParameter("reglogin"); 
          String haslo = request.getParameter("reghaslo");
          String imie = request.getParameter("regimie"); 
          String nazwisko = request.getParameter("regnazwisko");
          String telefon = request.getParameter("regtelefon"); 
          String mail = request.getParameter("regmail");                   
          boolean rejestr = false;
          
          rs = stmt.executeQuery("select * from Klient");          
          while (rs.next()) 
          {    
            if (rs.getString(2).equals(login))
             rejestr = true;   
          }              
          if (rejestr == false)
          {    
             String kto = "";
             rs = stmt.executeQuery("select max(id) from Klient");
             int nmax = -2;
             if (rs.next()) 
             {    
               nmax = rs.getInt(1);
             }     
             nmax++;            
             rs = stmt.executeQuery("insert into Klient values ('" + nmax + "','" + login + "','" + haslo + "','" + imie + "','" + nazwisko + "','" + mail + "','" + telefon + "')");
             sesja.setAttribute("logged", "true");
             sesja.setAttribute("login", login);
             sesja.setAttribute("opcja", "4");
             sesja.setAttribute("podopcja", "0");   
          }
          else
          {
           sesja.setAttribute("opcja", "1");   
           sesja.setAttribute("bladrej", "2");            
          }    
        }
        response.sendRedirect("index.jsp");
        %>

Nie mam pojęcia co jest nie tak z tym insertem :( proszę o pomoc.

Nie tylko przy rejestracji mi sie pokazuje taki komunikat. Przy weryfikacji też.
Bardzo proszę o pomoc.

org.apache.jasper.JasperException: An exception occurred processing JSP page /weryfikuj.jsp at line 11

8:         {                
9:             for(int i=0; i<oferty.length;i++)
10:             {                                
11:                 rs = stmt.executeQuery("update Nieruchomosc set autoryzajca=1 where id="+oferty[i]+"");
12:                 //rs = stmt.executeQuery("select * from Nieruchomosc where id="+oferty[i]+"");
13:                 
14:                 //ses.setAttribute("zdjecie["+ zdjecia[i] +"]", null);                                           

Z odczytem danych z bazy danych nie ma problemy ale z zapisem do bazy :((

Może ma Ktoś jakiś pomysł co z tym zrobić żeby działało ? Bo już zgłupiałem.

0

Witam.
Dla zapytań typu INSERT, UPDATE czy DELETE używaj funkcji executeUpdate() zamiast executeQuery(). Jednak pamietaj, że ta funkcja zwraca wartość int (liczba wierszy zaktualizowanych przez zapytanie lub 0 dla zapytań, które nic nie zwracają), więc wystarczy, że wywołasz

stmt.executeUpdate("update Nieruchomosc set autoryzajca=1 where id="+oferty[i]+"");

0

Dalej coś nie tak przy weryfikacji :(

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 11 in the jsp file: /weryfikuj.jsp
Type mismatch: cannot convert from int to ResultSet
8:         {                
9:             for(int i=0; i<oferty.length;i++)
10:             {                             
11:                 rs = stmt.executeUpdate("update Nieruchomosc set autoryzajca=1 where id="+oferty[i]+"");
12:                 //rs = stmt.executeQuery("select * from Nieruchomosc where id="+oferty[i]+"");
13:                 
14:                 //ses.setAttribute("zdjecie["+ zdjecia[i] +"]", null);                                           


Stacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
 
0

Omg

Dla zapytań typu INSERT, UPDATE czy DELETE używaj funkcji executeUpdate() zamiast executeQuery(). Jednak pamietaj, że ta funkcja zwraca wartość int

0

Wybaczcie moją zieloność z JSP i co mam zrobić z tym typen danych integer ?

0

Jaki to ma związek z JSP? Po prostu nie możesz przypisać inta do zmiennej typu ResultSet.

0

Jej faktycznie :) dzięki i przepraszam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1