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) poza 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