# Connection Variable in anderer Klasse verwenden -> statement



## avo (21. Jun 2009)

Hallo zusammen,

ich habe meine Connection Methode in einer anderen Klasse ausgelagert:

[Java]	public static void connect(){

		System.out.println("loading database...");

	    try{
	    	Class.forName("com.mysql.jdbc.Driver");
	    }
	    catch(ClassNotFoundException cnfe){
	    	System.out.println("Can't load driver: "+cnfe.getMessage());
	    }

		try {
			conn = DriverManager.getConnection(URL, USER, PASS);
			System.out.println("successful!");
			System.out.println("");


		}
		catch (Exception e) {
			System.err.println("connection failed!");
		}
	}[/code]

und benötige die conn Variable in einer anderen Klasse für das Statement Objekt, um mit der Datenbank arbeiten zu können.
Gibt es eine Möglichkeit die conn Variable zu übergeben? Ich bekomme das nicht hin...

folgender Code soll in einer anderen Klasse ausgeführt werden:

[Java]		DB_Connect.connect();

	    String stringCreate = "CREATE TABLE movie (ID INTEGER PRIMARY KEY,"+
	    											"org_Title VARCHAR(30),"+
	    											"ger_Title VARCHAR(30),"+
	    											"year INTEGER,"+
	    											"oscars INTEGER,"+
	    											"ID_Regisseur INTEGER)";


	    try {
	    	Statement stmtCreate = conn.createStatement();
			int rowCount = stmtCreate.executeUpdate(stringCreate);
			System.out.println(rowCount);
		} 
	    catch (SQLException e) {
			e.printStackTrace();
		}


		DB_Connect.disconnect();[/Java]


Vielen Dank fürs lesen...

avo


----------



## mvitz (21. Jun 2009)

Evtl geht es ja so:

```
public class Database {
  private String url;
  private String user;
  private String password;
  public Database(String url, String user, String password) {
    Class.forName("com.mysql.jdbc.Driver");
    this.url = url;
    this.user = user;
    this.password = password;
  }

  public Connection getConnection() {
    return DriverManager.getConnection(url, user, password);
  }
}
```

Dann kannst du die Klasse so benutzen.

```
Database db = new Database("blub", "user", "pw");
Connection con = db.getConnection();
String sql = "CREATE TABLE movie (ID INTEGER PRIMARY KEY,"+
                                                    "org_Title VARCHAR(30),"+
                                                    "ger_Title VARCHAR(30),"+
                                                    "year INTEGER,"+
                                                    "oscars INTEGER,"+
                                                    "ID_Regisseur INTEGER)";
  try {
    Statement stmtCreate = con.createStatement();
    int rowCount = stmtCreate.executeUpdate(sql);
    System.out.println(rowCount);
  } catch (SQLException e) {
    e.printStackTrace();
  }
```


----------



## avo (21. Jun 2009)

oh man.. natürlich... 

Vielen Dank für die schnelle Antwort =)

Das ganze noch in einen try/catch und alles funktioniert.


[Java]	public static Connection getConData(){
		try{
			return DriverManager.getConnection(URL, USER, PASS);
		}
	    catch (SQLException e) {
			e.printStackTrace();
		}
	    return null;
	}[/Java]


Nochmal vielen Dank =)


----------

