Before start of result set

0

Witam.
Mam nastepujacy problem.
Po skompilowaniu wyrzuca mi wyjatek : Before start of result set.
Wyczytalem, ze nalezy ustawic rs na rs.beforeFirst(); , co niestety nie pomoglo..
Moze ktos z was widzi blad?

<%@ page import="java.sql.*" %>
<HTML>
    <HEAD><TITLE>LOGOWANIE</TITLE></HEAD>
    <BODY>

        <FORM METHOD=POST ACTION="zalogowano.jsp">
            LOGIN <P></P>   <INPUT TYPE=TEXT NAME=login SIZE=20><BR>
            HASLO  <P></P>  <INPUT TYPE=PASSWORD NAME=haslo SIZE=20><BR>
            <P><INPUT TYPE=SUBMIT VALUE="ZALOGUJ">
                <%
                ResultSet rs = null;
                paczka.MySQL conn = new paczka.MySQL();
                conn.connect();
                Statement stmt = conn.getConnection().createStatement();
                rs = stmt.executeQuery("SELECT * FROM osoba");
                rs.beforeFirst();
                String log = rs.getString("LOGIN");
                String has = rs.getString("HASLO");
                String login = request.getParameter("login");
                String haslo = request.getParameter("haslo");
                boolean a= true;
                while (a) {
                    if ((log == login) && (has == haslo)) {
                        out.println("udalo sie");
                        a= false;
                    } else {
                        rs.next();
                    }
                }

                %>
        </FORM>

    </BODY>
</HTML>

Z gory dzieki za pomoc!

0
  1. Zgodnie z dokumentacją JDBC driver nie musi implementować metody beforeFirst()
  2. W pętli while(a) wywołujesz metodę rs.next() nie sprawdzając czy jest następny element.
  3. Źle porównujesz Stringi,
(log == login) && (has == haslo)) //tak jest niedobrze
(log.equals(login) && has.equals(haslo)) //tak ma być
  1. Nie boisz się przesyłać nieszyfrowanych haseł?
0

Dzieki!
Zadzialo w ten sposob...:

 String login = request.getParameter("login");
            String haslo = request.getParameter("haslo");
            ResultSet rs= stmt.executeQuery("SELECT LOGIN,HASLO FROM osoba WHERE LOGIN='" + login + "'AND HASLO ='" + haslo + "'");
            if (rs.first()) {
                    if (rs.getObject("LOGIN").toString().compareTo(login) == 0  && rs.getObject("HASLO").toString().compareTo(haslo) == 0)
                        {
                    out.println("Zalogowany jako" + login);
               }

            }
0

Gdybyś (zamiast zakładać nowy wątek) zajrzał do najnowszego wątku, to miałbyś odpowiedź kilkanaście godzin wcześniej. A temat tego wątku sugerował, że jest w nim poruszany Twój problem.

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