"Globale Objekte" durch statische Va riablen/Methoden ermöglichen?
Von: Egon Schmid (egon.schmid@dischingen.de) [Profil]
Datum: 28.10.2009 10:56
Message-ID: <hc94fv$p2u$02$1@news.t-online.com>
Newsgroup: de.comp.lang.java
Datum: 28.10.2009 10:56
Message-ID: <hc94fv$p2u$02$1@news.t-online.com>
Newsgroup: de.comp.lang.java
In Java gibt es keine globalen Variablen/Objekte wie in anderen
Sprachen, z.B. PHP.
Wenn ein Objekt eine Information benötigt, muss man diesem diese
irgendwie übergeben, in der Regel über einen Konstruktor oder einer
set()-Methode.
Es gäbe auch einen anderen Weg, über statische Variablen.
Bei einer Datenbank-Anwendung wird beispielsweise die Connection in
sämtlichen Objekten benötigt, in dem Beispiel die Klasse "MyTable".
Ich hole mir diese über die statische Methode
MyDatabase.getConnection().
Es führt zu einer Exception, wenn der Konstruktor MyTable() vorm
Konstruktur MyDatabase() aufgerufen wird, was auch Sinn macht.
Es führt auch zu Problemen, wenn der Konstruktur MyDatabase() mehrmals
aufgerufen wird, das Feld wird dann überschrieben. Es würde Sinn machen,
hier eine Exception dann auszulösen.
----- MyDatabase.java -----
public class MyDatabase {
private static Connection con = null;
public MyDatabase() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"user",
"password");
} catch (Exception ex) {
Logger.getLogger(
MyDatabase.class.getName())
.log(Level.SEVERE, null, ex);
System.exit(1);
}
System.out.println("Verbindung erfolgreich");
}
public static Connection getConnection() {
return con;
}
}
----- MyTable.java -----
public class MyTable {
Connection con;
ResultSet rs;
Statement stmt;
public MyTable() {
try {
con = MyDatabase.getConnection();
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery("SELECT * FROM test");
rs.last();
System.out.print("Datensätze: ");
System.out.println(rs.getRow());
rs.first();
} catch (SQLException ex) {
Logger.getLogger(
MyDatabase.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
Ist diese Lösung in Ordnung, oder gibt es bessere Möglichkeiten?
viele Grüße
Egon Schmid
[ Auf dieses Posting antworten ]Antworten
- Corvan (28.10.2009 11:06)
- Egon Schmid (28.10.2009 11:30)
- Malte Schirmacher (28.10.2009 11:48)
- Michael Paap (28.10.2009 14:33)
- Malte Schirmacher (28.10.2009 14:38)
- Achim Peters (28.10.2009 23:38)
- Gunter Herrmann (30.10.2009 00:53)
- Michael R. (30.10.2009 09:36)
- Achim Peters (30.10.2009 13:24)
- Daniel Urban (29.10.2009 12:19)
- Maxim Webster (29.10.2009 12:46)
- Daniel Urban (29.10.2009 14:39)
- Maxim Webster (29.10.2009 15:24)
- Daniel Urban (29.10.2009 17:54)
- Batman (30.10.2009 08:53)
- Daniel Urban (30.10.2009 09:51)
- Markus Eberle (30.10.2009 21:19)
- Daniel Urban (31.10.2009 10:04)
- Markus Eberle (31.10.2009 15:57)
- Batman (31.10.2009 04:00)
- Daniel Urban (31.10.2009 10:28)
- Malte Schirmacher (29.10.2009 17:49)
- Daniel Urban (29.10.2009 18:35)
- Malte Schirmacher (29.10.2009 18:41)
- Daniel Urban (29.10.2009 19:00)
- Malte Schirmacher (31.10.2009 10:12)
- Batman (30.10.2009 09:10)
- Daniel Urban (30.10.2009 09:59)
- Batman (31.10.2009 05:37)
- Gunter Herrmann (30.10.2009 01:14)
- Daniel Urban (30.10.2009 09:27)
- DB (28.10.2009 12:18)
- Maxim Webster (28.10.2009 19:25)
- Sven Köhler (28.10.2009 21:33)
- Daniel Urban (29.10.2009 10:53)
- Bernd Hohmann (29.10.2009 11:37)
- Daniel Urban (29.10.2009 11:57)
- Batman (29.10.2009 15:18)
- Sven Köhler (30.10.2009 00:12)
- Bernd Hohmann (29.10.2009 23:50)
- Batman (30.10.2009 09:13)
- Sven Köhler (30.10.2009 09:15)
- Michael R. (30.10.2009 09:28)
- Bernd Hohmann (30.10.2009 11:18)
- Michael R. (30.10.2009 21:32)
- Bernd Hohmann (30.10.2009 22:34)
- Daniel Urban (31.10.2009 10:17)
- Chris Seidel (31.10.2009 10:20)
- Michael R. (31.10.2009 16:40)
- Daniel Urban (30.10.2009 09:21)
- Sven Köhler (30.10.2009 10:44)
- Daniel Urban (30.10.2009 11:38)
- Michael R. (29.10.2009 00:31)
