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.
Was läuft dabei schief. Bzw. wie mach ich es besser?
Gruß niesel
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