Mysql a pusty resultset

Odpowiedz Nowy wątek
2009-01-07 16:16
0

Witam.
Od razu zaznaczę ze przeczytałem wszystkie podobne wątki i nie znalazłem żadnego odpowiadającego mojemu problemowi.
Zaznaczę też , że dopiero raczkuje jeżeli chodzi o jave i jeżeli przeoczyłem jakiś prozaiczny błąd to z góry przepraszam za zawracanie głowy.
W czym problem?
Napisałem taką oto klasę do łączenia się z bazą mysql , oraz wykonywania zapytania:

import java.sql.*;

public class BazaMysql {

   Connection dbcon ;
    ResultSet rs;    // zbior wierszy zwroconych przez zapytanie
   public  Statement statement;    // kontener dla operacji SQL
   public String err;

   public BazaMysql()
   {

     String loginUser = "ogloszenia";

     String loginPasswd = "zimowo";

     String loginUrl = "jdbc:mysql://localhost/ogloszenia";

     try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();

         dbcon = DriverManager.getConnection(loginUrl, loginUser, loginPasswd);
         statement =  (Statement) dbcon.createStatement();

     }

     catch(Exception e){
        err = "Nie udało się nawiązać połączenia z bazą";
     }

    }

   public ResultSet executeQuery(String sql) {

    try {

         this.rs = statement.executeQuery(sql);

    }

    catch (Exception e) {
        err = e.toString();
        return null;

    }

    return this.rs;

}

}

I uzywam jej w ten sposób:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.sql.ResultSet" %>
<%@page import="java.sql.Statement" %>
<%@page import="java.sql.Connection" %>
<%@page import="narzedzia.BazaMysql" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Data</title>
    </head>
    <body>

<%
ResultSet rs = null;
String sql = "select * from tb_loginy";

 try{

      narzedzia.BazaMysql bm = new BazaMysql();

     try {

           rs = bm.executeQuery(sql);

            String login = rs.getString("login");
            String password = rs.getString("password");

            out.println(login);
            out.println(password);

        rs.close();
         }

         catch(Exception e2) {
             out.println(e2.toString());
             out.println(bm.err);
         }

    }
 catch(Exception e1){
            out.println("Nie udało sie nawiązać połączenia z bazą");
     }

%>

    </body>
</html>

Strona zwracała mi: "SQLException null"

Po przejechaniu debuggerem odkryłem że program wywala sie do catcha nie w momencie
rs = bm.executeQuery(sql);
a dopiero
String login = rs.getString("login");

Po dokładniejszym sprawdzeniu , okazuje się, że rs jest pusty... pobiera co prawda 4 wiersze (bo tyle ich jest w tej tabeli w bazie), ale (chyba ze nie umiem dobrze przejzec danych w debuggerze) po za tym ze sa te 4 wiersze to są one puste, przez co prawdopodobnie wywala mi się to w tym momencie gdy chce pobrać te dane których nie ma.

I tu pojawia sie moje pytanie: Czemu ten rs jest pusty?

Mam nadzieje , że ktoś mi pomoże bo walcze z tym i walcze , a końca nie widać;p

Pozostało 580 znaków

2009-01-07 16:36
0

Coś w rodzaju

      rs.beforeFirst();
      while (rs.next())
      {
            String login = rs.getString("login");
            String password = rs.getString("password");

            out.println(login);
            out.println(password);
       }

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2009-01-07 18:37
0

Mam nadzieje , że nie zostanie to odebrane wulgarnie:
Ratujesz mi dupe!:>

Dzieki wielkie ;]]]] Jeśli jesteś z Białegostoku to zapraszam na piwo;pppp

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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