MySQL Datenbankanbindung extra Klasse

Sabrina2612

Mitglied
Hallo an Alle,

ich habe ein Problem mit meiner Datenbankanbindung.

Ich will ein Verwaltungsprogramm schreiben, in der ich auf meine Datenbank zugreifen kann (Einträge erstellen, löschen, ändern etc.)
Dafür habe ich eine Klasse erstellt die die Datenbankanbindung realisiert.
Eine andere Klasse stellt die GUI dar. Dort werden wiederum andere Fenster aufgerufen ( auch wieder in extra Klassen realisiert). Ich finde somit wird es übersichtlicher :)

Jetzt habe ich das Problem dass beim Aufruf der Datenbank-Klasse in einer GUI Klasse die Variablen null sind und es einen Null Pointer Exception gibt.
Ich will ja nicht jedes Mal die Datenbankanbindung nochmal schreiben pro Klasse.


Wie kann ich das lösen?

Bei Gelegenheit poste ich auch gerne mal meinen Code.

LG Sabrina
 

chalkbag

Bekanntes Mitglied
Wenn ich es richtig vestehe, was ich wie immer bezweifle.

Du könntest sowas wie ein Singelton, eine Factory, Google Guice oder was anderes vergleichbares verwenden.

Also wenn ein Anfrage an das Datenmodell kommt und noch keine Verbindung besteht, wird eine aufgebaut, anderenfalls wird die vorhandene verwendet.

Pseudocode!

Java:
public final dbHandler{

  private static DbModul dbModul = null;

  private dbHandler(){}

  public static DbModul getdbConnection(){
        if (dbModul == null{
            dbModul = new DbModul();
        }
        return dbModul;
   }
}

}
 
Zuletzt bearbeitet:

chalkbag

Bekanntes Mitglied
Nein muss es nicht sein, habe ja Alternativen vorgeschlagen. Guice zu erklären wäre jetzt nur aufwändiger gewesen.
Ok, wirf das final raus, ansonsten sehe ich keine großen Ungewöhnlichkeiten (Singleton (Entwurfsmuster) ? Wikipedia). Von Threadsicherheit war keine Rede.

[Edit] Ok war Mist, ich bekenne mich schuldig.
 
Zuletzt bearbeitet:

Sabrina2612

Mitglied
Java:
import java.sql.*; 

public class MySQL_Connection {
	
	final static String hostname = "localhost"; 
 	final static String port = "3306"; 
 	final static String dbname = "clicker"; 
 	final static String user = "root"; 
 	final static String password = "Sabrina88"; 
 	static Connection conn = null; 
  
 	public static void Treiber(){
     	try { 
       	 System.out.println("* Treiber laden"); 
      	    	Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
        	} 
        	catch (Exception e) { 
            	System.err.println("Unable to load driver."); 
            	e.printStackTrace(); 
        	} 
 	}
 	
 	public static void Verbindung_Start(){
    	try { 
       	 System.out.println("* Verbindung aufbauen"); 
   	    	String url = "jdbc:mysql://"+hostname+":"+port+"/"+dbname; 
   	    	conn = DriverManager.getConnection(url, user, password); 
    	}
    	catch (Exception e) { 
        	System.err.println("Unable to connect."); 
        	e.printStackTrace(); 
    	} 
 	}
 	
 	public static void Verbindung_Ende(){
    	try {
        	System.err.println("Unable to load driver."); 
    	} 
    	catch (Exception e) { 
        	System.err.println("Unable to close."); 
        	e.printStackTrace(); 
    	} 
 	}
 	
 	
	public static void main() { 
	
    }

	public Statement createStatement() {
		// TODO Auto-generated method stub
		return null;
	} 
		
}
//ps ich weiß static stört hier aber ohne gibt es nur fehlermeldungen

//Dann will ich eine andere Klasse erstellen in der ich die Methoden von MySQL Connection aufrufe.
Will dort ja ein Statement und Result Set verwenden. Aber er sagt mir immer conn wär null bzw. an der Stelle gibt er ein Nul Pointer Exception aus

Danke für die Hilfe im Vorraus
 
Zuletzt bearbeitet von einem Moderator:

Sabrina2612

Mitglied
Sorry die Einrückungen sind wieder schief gelaufen-.-

Ich hab vielleicht ne Idee.
ISt es eventuell ratsam die sache, die ich im Konstruktor geschrieben habe außer connection.close() in den Konstruktor der Klasse zu schreiben. Dann kann ich in der anderen Klasse eine Instanz davon erstellen und damit vielleicht auch mein null pointer fehler gelöst?

Was haltet Ihr davon?
 

Sabrina2612

Mitglied
Also habe jetzt mal meine Klasse umgestellt.
Ich krriege allerdings keine Ausgabe meines SQL Statement obwohl Daten enthalten sind.

Java:
import java.sql.*; 

public class MySQL_Connection {
	
	final static String hostname = "localhost"; 
 	final static String port = "3306"; 
 	final static String dbname = "clicker"; 
 	final static String user = "root"; 
 	final static String password = "Sabrina88"; 
 	static Connection conn = null; 
 	
 	public MySQL_Connection(){
 		try { 
 	       	 System.out.println("* Treiber laden"); 
 	      	 Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
 	    } 
 	    catch (Exception e) { 
 	         System.err.println("Unable to load driver."); 
 	         e.printStackTrace(); 
 	    } 

 	   try { 
 	       	 System.out.println("* Verbindung aufbauen"); 
 	   	    	String url = "jdbc:mysql://"+hostname+":"+port+"/"+dbname; 
 	   	    	MySQL_Connection.conn = DriverManager.getConnection(url, user, password); 
 	    	}
 	    	catch (Exception e) { 
 	        	System.err.println("Unable to connect."); 
 	        	e.printStackTrace(); 
 	    	}
 	        	
 	}

 	public static void Verbindung_Ende(){
    	try {
        	System.out.println("* Verbindung schließen");
        	MySQL_Connection.conn.close();
    	} 
    	catch (Exception e) { 
        	System.err.println("Unable to close."); 
        	e.printStackTrace(); 
    	} 
 	}
 	
 	
 	public static void main(String[] args) { 
	
		Verbindung_Ende();
		
    }

	public Statement createStatement() {
		// TODO Auto-generated method stub
		return null;
	} 
		
}

Java:
import java.sql.*;


public class SQL_Query {
	
    static Statement query;        
 	
    public static void main(String[] args){
    	
    	MySQL_Connection db = new MySQL_Connection();
    	
        // Anfrage-Statement erzeugen.
        try {
			query = db.conn.createStatement();

            // Ergebnistabelle erzeugen und abholen.
            String sql = "SELECT * " + "FROM Dozent ";
            ResultSet result = query.executeQuery(sql);
            System.out.print(db.conn);

            // Ergebnissätze durchfahren.
            while (result.next()) {
            	int id = result.getInt(1); 
                String first_name = result.getString(2); // Alternativ: result.getString(1);
                String last_name = result.getString(3); // Alternativ: result.getString(2);
                String name = id + ", " + last_name + ", " + first_name;
                System.out.println(name);
            }
        } 
        catch (SQLException e) {
            e.printStackTrace();
        }
        
        MySQL_Connection.Verbindung_Ende();
        
    }
}

Vielleicht könnt ihr mir ja helfen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Frage zu Encodingproblem bei einer Datenbankanbindung Datenbankprogrammierung 1
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
A Bestmögliche Entkopplung der Datenbankanbindung Datenbankprogrammierung 6
J Derby/JavaDB Datenbankanbindung Eclipse und Derby Datenbankprogrammierung 7
M Java Datenbankanbindung funktioniert nicht Datenbankprogrammierung 4
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
Z PostgreSQL Java Servlets mit Datenbankanbindung Datenbankprogrammierung 3
B Datenbankanbindung JSP Datenbankprogrammierung 7
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
C Datenbankanbindung mit einem JButton Datenbankprogrammierung 12
M Servlet in JSP anbinden // Datenbankanbindung in JSP Datenbankprogrammierung 8
C Pokergame + Datenbankanbindung (Wahrscheinlichkeiten) Datenbankprogrammierung 16
G Probleme mit Datenbankanbindung Datenbankprogrammierung 3
A Datenbankanbindung an mySQL und Ein-/Auslesen der Daten Datenbankprogrammierung 4
A Datenbankanbindung, Grundlagen Datenbankprogrammierung 2
D Datenbankanbindung unter Linux Datenbankprogrammierung 10
D DAtenbankanbindung im OO-Aufbau Datenbankprogrammierung 5
M vorschläge bzgl. java programm mit datenbankanbindung Datenbankprogrammierung 4
M Datenbankanbindung - Passwort schützen Datenbankprogrammierung 6
M Datenbankanbindung: Java - MySQL Datenbankprogrammierung 2
K Problem mit datenbankanbindung unter access 2003 Datenbankprogrammierung 3
C Datenbankanbindung ohne ODBC JDBC Brücke Datenbankprogrammierung 5
R Fehler in Datenbankanbindung Servlet -> Access Datenbankprogrammierung 5
P Datenbankanbindung (erstmal) zu Access Datenbankprogrammierung 3
S Datenbankanbindung + HTML + Applet Datenbankprogrammierung 7
M Datenbankanbindung in Java : Newbie-Frage Datenbankprogrammierung 2
H Datenbankanbindung MySQL per JDBC Datenbankprogrammierung 4
T Wie kann FS einen extra Wert bekommen? Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
S ResultSet als Parameter an andere Klasse übergeben Datenbankprogrammierung 3
I Konzept: Klasse / Entity für Einstellung der Software Datenbankprogrammierung 3
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
J Nur CRUD über Datenbank Klasse, oder auch mehr ? Datenbankprogrammierung 2
F Mapping SQL mit Klasse Datenbankprogrammierung 7
L MySQL Database Helper Klasse mit Consumer Datenbankprogrammierung 7
S Mithotec-Klasse Datenbankprogrammierung 6
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
M Wie übergebe ich Datenbankobjekte aus einer sql-Datenbank einer Java Klasse bzw. Instanz Datenbankprogrammierung 7
I SQLite Objekt speichern einer Serialisierter Klasse Datenbankprogrammierung 1
G ArrayList aus Verschiedenen klasse füllen Datenbankprogrammierung 5
H Klasse welche Mysql Daten zurück gibt Datenbankprogrammierung 18
F JPA und Klasse "User" Datenbankprogrammierung 3
E MySQL Klasse zur Abfrage statisch oder Standard Datenbankprogrammierung 5
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
T Klasse zum Syntaxcheck Datenbankprogrammierung 2
G Hibernate: wie @ManyToOne Referenz auf eigene Klasse? Datenbankprogrammierung 1
S Aus ResultSetMetaData Klasse dynamisch erzeugen Datenbankprogrammierung 3
P Neues Attribut in Entity-Klasse Datenbankprogrammierung 3
W XML Klasse in Datenbank speichern? Datenbankprogrammierung 5
N resultset aus andere klasse übergeben Datenbankprogrammierung 3
P Klasse in Datenbank speichern Datenbankprogrammierung 4
A DB-Klasse für häufig verwendete Aufgaben Datenbankprogrammierung 6
I Keine Treiber-Klasse! Datenbankprogrammierung 9
H Aufbau einer DB-Klasse Datenbankprogrammierung 10
J Klasse für Datensatzblättern in Verbindung mit JTable gesuch Datenbankprogrammierung 6
M Die ganze klasse als eigenen Thread laufen lassen Datenbankprogrammierung 3
G gutes design für db-klasse Datenbankprogrammierung 3
N Datenbank in diese Klasse einfügen Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben