Avatar billede mikael_l Nybegynder
30. maj 2008 - 12:48 Der er 6 kommentarer og
1 løsning

Fejl i rs.next-sætning

Jeg er igang med et eksamensprojekt, hvor jeg skal lave en administrativ del i JSP.

Mit spørgsmål er så, hvorfor får jeg en fejl her:

org.apache.jasper.JasperException: An exception occurred processing JSP page /DSBInternet/DSB/ADM/andre/andre.jsp at line 23

20:  Statement stmt = con.createStatement();
21:
22:  ResultSet rs = stmt.executeQuery("SELECT adgangskode FROM admin");
23:  while(rs.next())
24:        {
25:        if (oldpassword != null && andrepassword1 != null && andrepassword2 != null)
26:          {


Hele koden:

<%@ include file="logintjek.jsp" %>
<%@ page language="java" import="java.sql.*" %>

<html>
<head><title>DSB Internet</title></head>
<link rel="stylesheet" type="text/css" href="../../../style/style.css">

<body>
<%

  String adminuser = ("Admin");
  String oldpassword = request.getParameter("gammeladgangskode");
  String andrepassword1 = request.getParameter("andreadgangskode1");
  String andrepassword2 = request.getParameter("andreadgangskode2");

{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/dsb?user=root&password=mikael");

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT adgangskode FROM admin");
while(rs.next())
      {
        if (oldpassword != null && andrepassword1 != null && andrepassword2 != null)
        {
          // OK, vi har fået en indtastning. Tjek om brugeren reelt har tastet noget.
          if (oldpassword.length() <3 || andrepassword1.length() < 3 || andrepassword2.length() < 3)
          {
          out.write("<h1>Administrator område</h1><h3>Administration af Admin</h3><h4>Fejl ved indtastning!</h4><br>Der blev ikke indtastet nogen adgangskode <br> Indtast derfor venligst en adgangskode.");
          }
        else
          {
          if (andrepassword1.equals(andrepassword2) && oldpassword.equals(rs.getString("adgangskode")))
          {
            stmt.executeUpdate("UPDATE dsb.admin SET adgangskode = '"+andrepassword2+"' WHERE (admin.bruger) = '"+adminuser+"'");
            out.println("<h1>Administrator område</h1><h3>Administration af Admin</h3><h4>Adgangskode er ændret</h4><br><br>Den indtastede adgangskode til <b>"+adminuser+"</b> er nu:<h2><b>"+andrepassword2+"</b></h2><br><h3>Husk koden!</h3>");
          }
          else
          {
            out.println("<h1>Administrator område</h1><h3>Administration af Admin</h3><h4>Fejl i indtastninger</h4><br><br>De indtastede oplysninger stemmer <b>ikke</b> overens.");
          }
          }
        }
      }
rs.close();
stmt.close();
con.close();
}

%>
<form method="post" action="index.jsp">       

<input type="submit" value="Tilbage">
</form>
</body>
</html>
Avatar billede erikjacobsen Ekspert
30. maj 2008 - 13:22 #1
Må du opdatere på en connection, mens den er igang med at læse et recordsæt igennem?
Avatar billede mikael_l Nybegynder
30. maj 2008 - 13:27 #2
Aner det ikke.... Men det tror jeg ikke...? hehe . :-D
Avatar billede mikael_l Nybegynder
30. maj 2008 - 13:30 #3
Men det underlige er at den opdatere adgangskoden i database.... :-S
Avatar billede erikjacobsen Ekspert
30. maj 2008 - 13:35 #4
Hvis du ikke må (og jeg ved det ikke lige for din opsætning), så vil din UPDATE gå godt, men du får fejlen, når du skal hente næste post i dit recordsæt (eller hedder det resultsæt?)

Enten
1) Lav en connection mere.
2) Eller gem resultatet af din SELECT i en passende liste, og først derefter lave opdatering.
3) Eller hvis der kun er een post i din admin-tabel, så bruge en "if" isf en "while".

Det er nok 2)-eren der er den "rigtigste"
Avatar billede mikael_l Nybegynder
30. maj 2008 - 13:40 #5
Oki takker... :-)
Jeg kigger liger på det... :-)
Avatar billede mikael_l Nybegynder
30. maj 2008 - 14:28 #6
.
Avatar billede arne_v Ekspert
31. maj 2008 - 05:13 #7
Hvis koden skulle shines lidt op sop:

1) PreparedStatement

2) out.println erstattet af noget JSP (evt. JSTL)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester