Connection bleibt null

nieselfriem

Bekanntes Mitglied
Hallo!

In meiner kleine Loginklasse kann ich die Verbidnungsvariable nicht mittels einer get-Methode weitergeben. Das heist, in der Methode ist die conn-Variable mit den verbidnungsdaten initialisiert. In der get-Methode ist sie wieder null, obwohl sie global in der Klasse initialisiert ist.
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package logintest;

/**
 *
 * @author georg
 */
import java.sql.*;

public class Login {

    private Connection conn;
    private String password;
    private String user;

    public Login() {
    }
    //Soll einfach nur den Login durchführen und wenn alles ok ist ein Verbidnugs erzeugen
    public void login(String user, String password) throws SQLException, ClassNotFoundException {
        this.user = user;
        this.password = password;
        Class.forName("com.mysql.jdbc.Driver");
        this.conn = DriverManager.getConnection("jdbc:mysql://localhost/jahbtest?user=" + this.user + "&password=" + this.password);
        System.out.println("conn in login" + conn);//conn hat die Verbindung zu DB hergerstell
    }//login
    //Zugriffsmöglichkeit für andere Klassen, die auf die Connectio-Variable zugreifen wollen ohne immer ein login durchführen zu müssen
    public Connection getConnection() {
//conn bleibt immer null
        if (this.conn != null) {
            System.out.println("conn in getConnection bei login" + this.conn);
            return this.conn;
        } else {
            return null;
        }
    }//getCoonnection
}//class
Java:
public class SQLConnect  {
    protected Connection conn;
    /**
     * Dieser Kontruktor ist die Basis aller DAO-Klassen in diesem System
     * Alle DAO-Klassen rufen durch vererbung den Kontruktor auf und laden dabei
     * den Datenbanktreiber und erhalten die Verbindung
     * @throws SQLException
     * @throws ClassNotFoundException
     */

    public SQLConnect() throws SQLException, ClassNotFoundException  {

            Login log = new Login();
            conn = log.getConnection();//Verbindungsdaten beziehen
            System.out.println("Connect in SQLConnect="+conn);

    }//Konstruktor
}

Java:
public class GetDatasDAO extends SQLConnect {
	public GetDatasDAO() throws ClassNotFoundException, SQLException{
		super();//Verbindungsdaten aufrufen
	}

	public void getDatas() throws SQLException, ClassNotFoundException {
		if (conn != null) {
			 PreparedStatement stmt = conn.prepareStatement("SELECT `Name`.`AN-ID` FROM `Arbeitnehmer");
			 ResultSet rs=stmt.executeQuery();
                           System.out.println("getdata");
			 while(rs.next()) {
				System.out.println("Name = "+rs.getInt(2)+" AN-ID = "+rs.getString(1));
			 }
			 conn.close();
		}//if
                else System.out.println("Conn="+conn);
	}//getDatas
}//class
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package logintest;

import java.sql.*;
import java.lang.ClassNotFoundException;

/**
 *
 * @author georg
 */
public class Main {

    private static String user = "root";
    private static String password = "passwort";

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Login log = new Login();
        try {
            log.login(user, password);//login durchführen
        } catch (ClassNotFoundException ce) {
            ce.printStackTrace();
        }//catch
        catch (SQLException ex) {
            ex.printStackTrace();
        }//catch

        try {
            GetDatasDAO getDatas = new GetDatasDAO();//daten abrufen 
            getDatas.getDatas();

        } catch (ClassNotFoundException ce) {
            ce.printStackTrace();
        }//catch
        catch (SQLException ex) {
            ex.printStackTrace();
        }//catch
    }
}

Was läuft dabei schief. Bzw. wie mach ich es besser?

Gruß niesel
 

tfa

Top Contributor
Dein Login-Objekt in der main()-Methode wird zwar erzeugt aber nicht verwendet. Das GetDatasDAO-Objekt hat zwar ein Login-Objekt, das wird aber nie initialisiert (login wird nie aufgerufen).
Grundsätzlich solltest du deine Klassenhierarchie überdenken. Ein DAO ist sicherlich keine Connection, es hat vielleicht eine. Also keine Vererbung sonder eher Komposition.
 

daNny

Aktives Mitglied
Wo genau ist jetzt das Problem? Das habe ich nicht ganz verstanden.

Was mir auffällt: In deiner Main-Methode rufst du log.login() auf, aber das Login-Objekt wird nicht weiter verwendet.
Ich der Oberklasse SQLConnect erzeugst du im Konstruktor ein neues Login() Object (ein anderes als in deiner Main-Methode), dort wird aber kein log.login() aufgerufen, also auch keine Connection erzeugt.

Kommt das in etwa so hin?

Edit: Zu langsam ;)
 

nieselfriem

Bekanntes Mitglied
Die Connection soll eigentlich nur einmal erzeugt werden und zwar mit dem aufruf log.login() in der Main. In der SQLConnect soll dann mittels des Kontrutkors das voher durch log.login() erzeugt conn-Object mit den Verbindungsdaten aufgerufen und verwendet werden. So der Plan....

Gruß niesel
 

daNny

Aktives Mitglied
doch hier
Java:
 Login log = new Login();
        try {
            log.login(user, password);//login durchführen
        }

Gruß niesel

Danach passiert damit aber auch nichts mehr! Entweder du übergibst diese Instanz deinem danach erzeugten Dao, oder führst die login() Methode im Konstruktor des DAOs aus.
Generell ist dein Design, wie tfa aber sagte, etwas unschön
 

nieselfriem

Bekanntes Mitglied
Ist es nun besser die Daten wie benutzername im Kontrukor einer Klasse zu übergeben, oder es an die Methode direkt

also

GetDatasDAO get = new GetDatasDAO(use,passw,Log)
get.getDatas();
oder besser
GetDatasDAO get = new GetDatasDAO
get.getDatas(user,passw,Log)

Gruß niesel
 

daNny

Aktives Mitglied
Naja... was besser ist, das ist immer Ansichtssache

Aber gerade dein DAO soll die Datenbankkommunikation "verstecken". Es macht also kein sinn, jeder Methode die Zugangsdaten mit zu übergeben...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Maxim6394 EclipseLink + SQLite | Unable to acquire a connection from driver [null] Datenbankprogrammierung 6
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
S Oracle DB-Connection in .jar file ändern Datenbankprogrammierung 11
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
K Glassfish 4.1.1 Connection Pool u. Resource Ref Datenbankprogrammierung 20
OnDemand Hikari Pool Connection Validation Datenbankprogrammierung 18
Dimax MySQL Methodenaufruf mit Connection Übergabe Datenbankprogrammierung 8
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
S Connection Pool Hikari Datenbankprogrammierung 7
P MySQL Connection Global Datenbankprogrammierung 13
J Connection Datenbankprogrammierung 1
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
S New Connection Wizard / NetBeans Datenbankprogrammierung 0
P Frage zu Connection.close() Datenbankprogrammierung 4
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
M Connection erstellen Datenbankprogrammierung 1
F Monitoring DB Connection Pool Datenbankprogrammierung 3
H JDBCODBC - Connection-Objekt Datenbankprogrammierung 3
E MySQL SQL - wann connection schließen Datenbankprogrammierung 2
R HSQLDB Connection refused Datenbankprogrammierung 2
B JDBC Connection Fehler Datenbankprogrammierung 8
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
reibi Derby/JavaDB Connection refused Datenbankprogrammierung 14
S Ressourcenverbrauch Connection Open/Close Datenbankprogrammierung 11
W MySQL-Connection-Objekt übergeben Datenbankprogrammierung 2
N SQL-Connection Datenbankprogrammierung 3
B MySQL Datenbank Connection als String zurückgeben Datenbankprogrammierung 7
M Connection Pooling Datenbankprogrammierung 7
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
K Connection - möglich & nicht möglich Datenbankprogrammierung 2
T Datenbank connection mit Servlet Datenbankprogrammierung 4
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
H H2 H2-Connection bei WebStart Datenbankprogrammierung 6
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
S Wie überprüfe ich ob die Instanz einer Connection gerade werwendet wird? Datenbankprogrammierung 4
X Connection schließen oder speichern? Performance Frage Datenbankprogrammierung 7
C Derby/JavaDB JavaDB: Keine Connection Datenbankprogrammierung 7
T Pooled Connection und Connection Pool Datenbankprogrammierung 2
S Java Connection to MySQL Datenbank FunPic Datenbankprogrammierung 4
Q java.lang.NullPointerException connection = null Datenbankprogrammierung 13
H DB-Connection zu MySQL Datenbankprogrammierung 12
D Wie bekommt man die JDBC connection zum laufen?(Eclipse) Datenbankprogrammierung 16
T MySQL ResultSet zurückgeben nachdem Connection geschlossen wurde? Datenbankprogrammierung 3
B db2 jdbc connection Datenbankprogrammierung 4
G MySQL Connection Problem Datenbankprogrammierung 3
R sql.Connection vs. mysql.Connection Datenbankprogrammierung 3
R Connection Pooling - Tote Verbindungen Datenbankprogrammierung 5
S Connection Pool Datenbankprogrammierung 23
P JPA Connection dynamisch hinzufügen Datenbankprogrammierung 2
S JDBC connection open Datenbankprogrammierung 3
D MySQL Verständnisproblem mit globalen Variablen (Connection) Datenbankprogrammierung 7
F Connection refused: connect Bei Verbindungsherstellung zu MySQL Datenbank Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
R Connection nur als root Datenbankprogrammierung 3
N Connection kann nicht geschlossen werden!? Datenbankprogrammierung 4
S JPA Hibernate: "The user must supply a jdbc connection" Datenbankprogrammierung 4
F MySQL - Connection JDBC-Driver Problem Datenbankprogrammierung 4
E MSSQL-Server connection aufbau sehr langsam Datenbankprogrammierung 2
S Zuviele DB Connection Datenbankprogrammierung 4
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
S Connection String MS Access mit Systemdatenbank / Arbeitsgruppeninformationsdatei Datenbankprogrammierung 4
R DB-Connection, aber wie? Datenbankprogrammierung 2
F Java SQL Connection mit Rollback Datenbankprogrammierung 2
P DB- Connection lösen Datenbankprogrammierung 7
padde479 Connection String Oracle Datenbankprogrammierung 5
W JDBC Connection isValid()? Datenbankprogrammierung 4
G Frage zu connection? Datenbankprogrammierung 9
G allgemeine JDBC-Connection Frage Datenbankprogrammierung 2
H Wie kann ich eine Datenbank Connection aus XML-Datei lesen! Datenbankprogrammierung 2
J jdbc Oracle Connection refused Datenbankprogrammierung 6
D Probleme mit mysql-Connection Datenbankprogrammierung 10
K Wo "Connection" Object erstellen? Datenbankprogrammierung 7
N Kleine Frage zu Connection Pooling mit DataSource Datenbankprogrammierung 2
M Hilfe - keine Connection zur DB Datenbankprogrammierung 4
G Connection zu einer Oracle DB erstellen Datenbankprogrammierung 8
K Oracle XE Connection Problem Datenbankprogrammierung 2
S Connection/Statement/ResultSet auf einmal geschlossen Datenbankprogrammierung 8
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
G SQL Server Connection Datenbankprogrammierung 12
K "Connection timed out: connect" bei MySQL-Verbindu Datenbankprogrammierung 10
R Warum ist meine Connection null? Datenbankprogrammierung 6
B Connection Pools Datenbankprogrammierung 3
U Connection läuft nicht als jar Datenbankprogrammierung 6
R Interessantes Problem mit Connection-Pool. Datenbankprogrammierung 2
C Statement/Connection SQLWarning Datenbankprogrammierung 4
P Connection problems Datenbankprogrammierung 15
J Keine Connection zur MySQL Db Datenbankprogrammierung 6
K db connection wann schließen Datenbankprogrammierung 4
W Problem bei Connection mit SQLServer-Datenbanke mittels Java Datenbankprogrammierung 2
S Viele Klassen sollen eine Connection benutzen Datenbankprogrammierung 3
K Connection error Datenbankprogrammierung 18
G SQLException: No operations allowed after connection closed Datenbankprogrammierung 2
T problem mit mysql connection Datenbankprogrammierung 6
H Connection Pool + Tomcat + Oracle10g Datenbankprogrammierung 7
T JDBC Connection refused Problem Datenbankprogrammierung 6
L DB2 connection problem Datenbankprogrammierung 2

Ähnliche Java Themen


Oben