# DB Verbindung Design Frage



## JamesDean (28. Sep 2005)

ich möchte beim start meines java programmes die einstellungen für den zugriff aus einer propererties datei lesen(einstellung.ini), testen und gegebenfalls abändern (wenn fehler) und neu laden.(wenn zum beispiel das netzlaufwerk nicht gefunden wurde usw.)  und dann die ganze zeit benutzen können. wie stelle ich denn das am besten an mit Wrapperklassen ? ich führe dann verschiede aktionen auf der datenbank aus. aber ich möchte die url z.B. nicht immer aus der datei lesen sondern aus dem speicher wenn ich eine verbindung aufbauen will.


----------



## JamesDean (28. Sep 2005)

```
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public final class DB_Verbindung {

	private String javaTreiberklasse=null;
	private String protokoll;
	private String subprotokoll;
	private String treiberart;
	private String datenquellenPfad;
	private String benutzer;
	private String passwort;
	private String versuch;
	private String url=null;
	private Connection con;
	
	//Konstruktor
	public DB_Verbindung() {
		}
	
	public void ladeVerbindungsparameter(){
		String dateiName = "src/de/viewer/db/DB_Verbindung.ini";
		Properties dbParameter = new Properties();
		FileInputStream myFileInputStream = null;
		
		try {
			myFileInputStream = new FileInputStream(new File(dateiName));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		try {
			dbParameter.load(myFileInputStream);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		javaTreiberklasse = dbParameter.getProperty("javaTreiberklasse");
		protokoll = dbParameter.getProperty("protokoll");
		subprotokoll = dbParameter.getProperty("subprotokoll");
		treiberart = dbParameter.getProperty("treiberart");
		datenquellenPfad = dbParameter.getProperty("datenquellenPfad");
		benutzer = dbParameter.getProperty("benutzer");
		passwort = dbParameter.getProperty("passwort");
		
		this.url = protokoll+":"+subprotokoll+":"+treiberart+datenquellenPfad;
		System.out.println(url);
	}
	
	
	public Connection startConnection(){
		try {
			con = DriverManager.getConnection(url,benutzer,passwort);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
	
	public void endConnection(){
	}
	
	public void ladeJaveTreiberklasse(){
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public String getJavaTreiberklasse() {
		return javaTreiberklasse;
	}
}
```


so habe selbst mal was entworfen... kann ja mal jemand seinen senf dazu geben...

der aufruf ist dann immer

```
DB_Verbindung myDB = new DB_Verbindung();
		myDB.ladeJaveTreiberklasse();
		myDB.ladeVerbindungsparameter();
		myDB.startConnection();
```
[/code]


----------



## Jörg (28. Sep 2005)

kuck dir mal JdbcRowSet an, dass koennte dir vielleicht gefallen,
ansonsten find ich das ganz ok (im Prinzip)

die einzelnen Schlussel koennen ruhig als static final in die Klasse, genauso der Dateiname 

Ausserdem JavaKlassen eher so: DbVerbindung bzw. englisch


----------



## JamesDean (28. Sep 2005)

was meinst du mit static final ? welche schlüssel die variablen ?

alles klar dateinamen hab ich gemacht aber die anderen variablen muss ich so lassen damit ich sie verändern kann...


----------



## Jörg (29. Sep 2005)

Die Schluesselwerte fuer dein Propertyfile zB "javaTreiberklasse"
wuerd ich als finale Klassenvariablen definieren:

```
private/public static final String DRIVER_KEY = "javaTreiberklasse";
```
hm das muss nicht derselbe Name sein, wie die Variable, ist dir schon klar?? Nur in der *.ini muss der STring halt zu finden sein...


----------



## JamesDean (29. Sep 2005)

alles klar jetzt hab ich es... besten dank nochmal...

wo kann man eigentlich so ein thema als abgehakt kennzeichnen ?


----------

