# executeQuery liefert null zurück



## Pokersims94 (11. Jan 2013)

Hallo liebes Java Forum,

ich muss für die Schule eine kleine Dating Seite programmieren dabei kriegt das Servlet die daten von der Login.jsp und gibt diese Daten dann an eine Java Klass eweiter die dies auswerten soll. In dme Fall soll es das eigegebene Passwort mit dem Passwort aus der Datenbank vergleichen allerdings kriege ich, anstatt das Passwort aus der Datenbank, nur null zurück.

Der Login/Nick: TestNick
Passwort: TestPW

Hier einmal mein Code:


```
import java.sql.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;

/**
 *
 * @author Christian
 */
public class GeekDates {

    //Variabeln
    String PasswortDB;
    private static Connection con;
    private static Statement stmt;
    private static String sql;
    String login;

    
    //Datenbankverbindung herstellen
    public static void connect() {
        con = null;
        try {
            Class.forName("org.hsqldb.jdbcDriver");
            con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/",
                    "SA", "");
            stmt = con.createStatement();
        } catch (Exception e) {
            System.err.println("connect kann keine Verbindung zur Datenbank aufbauen: " + e);
        }
    }

    //Datenbankabfrage
    public void Login (String Login) {
        connect();
        login = Login;
        //Ab hier bekomme ich die NullPointerException
        try {

            Statement stmt1 = con.createStatement();
            ResultSet rs = stmt1.executeQuery("Select passwort from geekdatesdatenbank where Loginname = '" + Login + "'");

            PasswortDB = rs.toString();

        } catch (SQLException e) {
            System.out.println("Fehler: " + e);
        }
    }
    
    //Vergleicht die Passwörter und gibt dann true oder false zurück ans Servlet
    public boolean CheckPasswort(String passwort) {
        if (passwort.equals(PasswortDB)) {
            return true;
        }
        return false;
    }
}
```

Danke schon mal für eure Hilfe =)

Mit freundlichen Grüßen,

Pokersims94 / Chris


----------



## SlaterB (11. Jan 2013)

'liefert null zurück' und NullPointerException sind arg unterschiedliches

in welcher Zeile kommt die Exception? prüfe welche Objekte null sind, etwa Connection con,
läuft connect() fehlerfrei durch?

> rs.toString();
wäre letztlich eh falsch, du musst next() aufrufen und die erste Spalte abfragen, siehe Tutorials zu ResultSet

---

Methoden, Variablen, Parameter klein schreiben,
auf ungenutzen Code wie das erzeugte stmt-Objekt oder login/ Login achten


----------



## Pokersims94 (11. Jan 2013)

Ok danke =)

Edit: Ich habe jetzt noch mal alles nachgeschaut und so wie es aussieht liegt es an meiner Datenbank selbst also der Server den ich gestartet habe scheint wohl irgendwie geblockt zu werden von Windows =(

Grüße,

Chris


----------



## Lumaraf (11. Jan 2013)

Du solltest dir unbedingt mal PreparedStatements anschauen. Ansonsten kriegst du Probleme mit SQL Injections.


----------



## Pokersims94 (11. Jan 2013)

Kann man aus dem PreparedStatement auch einen String machen bzw. mit getString() den Inhalt in einem String speichern?

Danke für die Antworten und Grüße,

Chris


----------



## SlaterB (14. Jan 2013)

PreparedStatement sollst du absenden, einen String brauchst du daraus kaum,
obwohl es durchaus manchmal interessant wäre, das entstehende SQL zu sehen, was nicht gut geht,

als Ergebnis kommt ein ResultSet genau wie zuvor, das musst du erstmal kennenlernen, getString(..) gibt es da aber, ja


----------

