JDBC - Typ Connection in jeder Klasse neu öffnen?

Status
Nicht offen für weitere Antworten.

KS

Aktives Mitglied
Hallo

Ich habe ein blutiges Anfänger Problem.

Ich erstelle gerade eine Datenbankapplikation, welche auf MySQL zugreift!
Ich habe mehrere GUI Klassen.
In allen GUI Klassen (Masken) habe ich Abfragen zu erledigen!

Frage:

Wie kann ich es verhindern in jeder Klasse eine neue DB-Verbindung aufzubauen? So, dass ich meine Connection in jeder Klasse verwenden kann?

Cheers für jede Hilfe
 
T

TheSunToucher

Gast
Es gibt verschiedene Möglichkeiten, du kannst die Connection weiterreichen oder eine Klasse schreiben von der du dir eine Connection abholen kannst. Du könntest zum Beispiel ein Singleton schreiben, von welchem du Connections bekommst. Später kannst du die Connection in einen ConnectionPool umbauen.

Es gibt natürlich auch schon fertige Connection-Pools, solltest dich mal ein bischen umschauen...
 

KS

Aktives Mitglied
danke. Ich habe eine entsprechende Klasse für das erstellen der Connection erstellt:

Code:
DB CONNECTION = new DB();
... dies wird in der Hauptklasse meiner Applikation geöffnet und erstellt mir in der Klasse DB eine Connection!
Code:
public class DB {
  public Connection conn;
  
  public DB() {
    try {
      Connect();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }

  }

  static void Connect() {
    try {
      Class.forName("com.mysql.jdbc.Driver");
      Connection conn = DriverManager.getConnection(
          "jdbc:mysql://localhost/flightflow?user=root&password=gismo");
      System.out.print("DB-Connect established!");
  
    }
    catch (ClassNotFoundException ex) {
      /** @todo Diese Exception verarbeiten */
    }
    catch (SQLException ex) {
      /** @todo Diese Exception verarbeiten */
    }
  }
... Jedoch kann ich nur in meiner Hauptklasse auf CONNECTION zugreifen. In einer anderen Klasse ist kein Zugriff möglich. Mache ich denn einen Überlegungsfehler?
 
T

TheSunToucher

Gast
Jo, wie gesagt, du solltest ein Singleton daraus machen, also ungefähr so:

Code:
public class ConnectionPool {

	private final static ConnectionPool INSTANCE = new ConnectionPool ();
	
	private ConnectionPool () {
		
	}
	
	public synchronized Connection getConnection(){
		// hier Connection öffnen oder vorhandene ausliefern
		return con;
	}

	public synchronized void putConnection(Connection con){
		// hier Connection schließen oder aufheben für spätere Auslieferung
	}
	
	public synchronized static ConnectionPool getInstance(){
		return INSTANCE;
	}
}

Und dann kommst du an die einzige Instanz dieser Klasse von überall ran indem du:

Code:
public class MyConnectionUser {

	public MyConnectionUser() {
		ConnectionPool connectionPool = ConnectionPool .getInstance();
		Connection con = connectionPool.getConnection();
		// arbeit erledigen
		connectionPool.putConnection(con);
	}
}

Also falls dir weder "Singleton", "Design Pattern" noch "Connection-Pool" ein Begriff sind, solltest du noch ein bischen lesen, aber mit dem o.g. Beispiel kannst du schonmal loslegen. Wie der Name schon sagt und wie ich in den Kommentaren angedeutet habe ist es üblich das der Connection Pool eine gewisse Anzahl von Connection offen hält und diese immer wieder benutzt werden.

Hoffe das hilft, gruß
Tim
 

KSG9|sebastian

Top Contributor
1. variablen werden klein geschrieben (=> Connection)
2. variablen werden private deklariert (=> Connection)
3. erledigt man in der GUI keine abfragen, sondern im controller
4. singleton verwenden (wie schon gesagt)
5. ja du machst was falsch. du deklarierst conn als Instanzvariable und deklarierst eine weitere Variable conn als temporäre Variable in der Funktion "Connect"

Code:
public class DB { 
  public Connection conn; 
  
  public DB() { 
    try { 
      Connect(); 
    } 
    catch (Exception ex) { 
      ex.printStackTrace(); 
    } 

  } 

  static void Connect() { 
    try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      conn = DriverManager.getConnection( 
          "jdbc:mysql://localhost/flightflow?user=root&password=gismo"); 
      System.out.print("DB-Connect established!"); 
  
    } 
    catch (ClassNotFoundException ex) { 
      /** @todo Diese Exception verarbeiten */ 
    } 
    catch (SQLException ex) { 
      /** @todo Diese Exception verarbeiten */ 
    } 
  }

so sollte es gehen..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B MySQL (jdbc) -> connection liefert NULL Java Basics - Anfänger-Themen 3
B JDBC DB2 Connection Java Basics - Anfänger-Themen 1
A JDBC EmbeddedDriver Java Basics - Anfänger-Themen 1
C No suitable driver found for jdbc:odbc:mysql Java Basics - Anfänger-Themen 8
D JDBC wie ermittle ich den Driver? Java Basics - Anfänger-Themen 26
A Java - JDBC SQL Java Basics - Anfänger-Themen 2
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
F Warum erhalte ich diese Fehler bei der Einbindung von SQLite JDBC in Eclipse? Java Basics - Anfänger-Themen 1
Vince42 Java 8 JDBC / OLE DB Java Basics - Anfänger-Themen 15
O JDBC Ungültiger Spaltenindex Java Basics - Anfänger-Themen 19
K JDBC - Wie ist Fehlermeldung zu interpretieren Java Basics - Anfänger-Themen 3
B Java Datenbankverbindungsfähigkeit - JDBC Java Basics - Anfänger-Themen 1
D Was genau ist JDBC? Java Basics - Anfänger-Themen 2
P Classpath jdbc-Treiber kann nach export in jar-File nicht mehr geladen werden Java Basics - Anfänger-Themen 2
M JDBC SQL Problem Java Basics - Anfänger-Themen 5
K org.h2.jdbc.JdbcSQLException: Keine Daten verfügbar Java Basics - Anfänger-Themen 9
J Oracle JDBC Driver funktioniert nur in einer Klasse Java Basics - Anfänger-Themen 2
eLogic JDBC: Relative Pfadangabe in JAR Java Basics - Anfänger-Themen 14
F Erfassung von PCs in eine SQLite-Datenbank über JDBC Java Basics - Anfänger-Themen 9
S JDBC MySQL Connector - Element mit ' eintragen? Java Basics - Anfänger-Themen 4
D JDBC Datenbank fail?! Java Basics - Anfänger-Themen 20
R JDBC leeres ResultSet Problem Java Basics - Anfänger-Themen 2
J Java JDBC MySQL Query Java Basics - Anfänger-Themen 6
X JDBC installieren Java Basics - Anfänger-Themen 2
F JDBC - ClassNotFoundException Java Basics - Anfänger-Themen 3
J jdbc driver on linux ? Java Basics - Anfänger-Themen 11
lenniii DB Basics (JDBC-Treiber) Java Basics - Anfänger-Themen 16
P Servlets und JDBC Java Basics - Anfänger-Themen 2
C OOP JDBC: Ausgabe ResultSet nach Select Java Basics - Anfänger-Themen 3
P JDBC für anfänger Java Basics - Anfänger-Themen 16
D Probleme mit jdbc Java Basics - Anfänger-Themen 9
T JDBC Problemchen Java Basics - Anfänger-Themen 2
B JDBC Treiber lokal installieren ? Java Basics - Anfänger-Themen 2
B JDBC: Bereits in der DB vorhandene Abfrage ausführen Java Basics - Anfänger-Themen 7
G Oracle SQL JDBC in Eclipse laden Java Basics - Anfänger-Themen 2
G Maven Dependency für Oracle JDBC-Driver korrekt festlegen Java Basics - Anfänger-Themen 4
G JDBC - Classpath - Ich werd wahnsinnig! Java Basics - Anfänger-Themen 18
J Fehler bei MySql Anbindung mit JDBC Java Basics - Anfänger-Themen 4
G welche Java-Technologie für JDBC geeignet Java Basics - Anfänger-Themen 6
N JDBC Problem Java Basics - Anfänger-Themen 5
M Datenbankzugriff via JDBC Java Basics - Anfänger-Themen 8
S JDBC und NullpointerException Java Basics - Anfänger-Themen 5
S JDBC Verbindungen Java Basics - Anfänger-Themen 2
M JDBC Treiber LGPL Java Basics - Anfänger-Themen 11
D JDBC Treiber unter dem Java Application Server Java Basics - Anfänger-Themen 6
J java und jdbc mit access Java Basics - Anfänger-Themen 3
J JDBC Crash Kurs Java Basics - Anfänger-Themen 3
D Einige Fragen zu Java Java2D JDBC usw. XD Java Basics - Anfänger-Themen 13
D Kleines Problem mit JDBC Java Basics - Anfänger-Themen 2
T SWT-Tabelle aus JDBC füllen Java Basics - Anfänger-Themen 8
C jdbc Anfänger Tutorial gesucht Java Basics - Anfänger-Themen 19
H JDBC in den Klassenpfad eintragen Java Basics - Anfänger-Themen 4
J jdbc getTableName Java Basics - Anfänger-Themen 12
R JDBC Verbindung geht nicht Java Basics - Anfänger-Themen 4
S Problem mit JDBC und Transaktion Java Basics - Anfänger-Themen 12
G hilfe jsp/servlet,jdbc api running on tomcat server+webProxy Java Basics - Anfänger-Themen 8
A JDBC modular Java Basics - Anfänger-Themen 2
megachucky nochmal JDBC. komme nicht weiter. Java Basics - Anfänger-Themen 4
megachucky JDBC-Grundlagen: Verständnisprobleme Java Basics - Anfänger-Themen 31
Hallolu PONG Parent-Child connection Java Basics - Anfänger-Themen 3
G sql server connection mit windows authentication Java Basics - Anfänger-Themen 2
X Connection reset, wieso? Java Basics - Anfänger-Themen 4
P java.net.ConnectException: Connection refused: connect Java Basics - Anfänger-Themen 8
S Input/Output URL Connection Problem Java Basics - Anfänger-Themen 5
H Connection Java Basics - Anfänger-Themen 9
B Prüfung auf erfolgreiche Connection? Java Basics - Anfänger-Themen 2
K Frage zu einer Connection in Java Java Basics - Anfänger-Themen 3
R JDK installieren Nach Update auf java 1.7 Connection refused Java Basics - Anfänger-Themen 9
M "Connection reset" gbxRemote Socket Java Basics - Anfänger-Themen 9
M Netzwerkprogrammierung => Is connection alive? Java Basics - Anfänger-Themen 6
D Mysql Connection Close? Java Basics - Anfänger-Themen 14
D Facebook Connection problem Java Basics - Anfänger-Themen 2
M Audio Stream läuft auf :connection abort: socket write error Java Basics - Anfänger-Themen 2
G java.sql.Connection Connect ungleich null, aber geschlossen Java Basics - Anfänger-Themen 2
G JavaMail: Unrecognized SSL message, plaintext connection? Java Basics - Anfänger-Themen 3
G EJB - ConnectionPooling: Wie Connection erhalten? Java Basics - Anfänger-Themen 10
A Connection Prob Java Basics - Anfänger-Themen 3
S MySQL - connection Java Basics - Anfänger-Themen 8
J Kleine Connection Frage Java Basics - Anfänger-Themen 4
B java.net.ConnectException: Connection refused: connect ? Java Basics - Anfänger-Themen 2
T MySQL connection Java Basics - Anfänger-Themen 7
G db connection Java Basics - Anfänger-Themen 2
L Connection Pooling Grundlagenfragen Java Basics - Anfänger-Themen 2
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
B Erste Schritte Guice Injection nicht in jeder Klasse möglich Java Basics - Anfänger-Themen 2
G if Abfrage: Nicht jeder Fall berücksichtigt Java Basics - Anfänger-Themen 2
Xentox501 keyevent.VK_LEFT wird beim drücken jeder belibigen Taste aktiv. Java Basics - Anfänger-Themen 3
C Compiler-Fehler Wird eine if Bedingung nach einer for-Schleife nach jeder Iteration überprüft? Java Basics - Anfänger-Themen 1
J Durchschnitt jeder Zeile und und Spalte in einem 2D Arrays berechnen Java Basics - Anfänger-Themen 6
L OOP Neues Objekt bei jeder Eingabe erstellen (Objekte speichern?) Java Basics - Anfänger-Themen 10
Tom299 Log4j in jeder Klasse definieren? Java Basics - Anfänger-Themen 12
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
V Vor jeder Multiplikation den linken Multiplikator abrunden Java Basics - Anfänger-Themen 4
K Regex - Jeder buchstabe nur einmal Java Basics - Anfänger-Themen 7
S JTabbedPane jeder Tab in einer eigenen java Datei? Java Basics - Anfänger-Themen 3
Binary.Coder Vor und nach jeder Codezeile etwas einfügen Java Basics - Anfänger-Themen 3
L Array von Buttons, jeder soll MouseListener haben Java Basics - Anfänger-Themen 5
K in jeder klasse SQLExceptions??? Java Basics - Anfänger-Themen 2
G HILFE!!! JEDER MONAT HAT 31 TAGE Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben