# wechseln der datenbank



## jollyroger (3. Mrz 2006)

hi!

ich hab mal eine frage zum wechseln der datenbank unter jdbc.

ich hab eine applikation die verschiedene datenbanken benutzt die auf dem gleichen server liegen.

folgende funktion:


```
private void createDBConn(String pDBName, String pDBUser, String pDBPasswd) {

		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			fRFQConn = DriverManager.getConnection("jdbc:mysql:///" + pDBName,
					pDBUser, pDBPasswd);

			if (!fRFQConn.isClosed() && Debug == true)
				System.out.println("Successfully connected to MySQL server...");

		} catch (Exception e) {
			System.err.println("SQL exception: " + e.getMessage());
		}
	}
```

damit bau ich die verbindung zum db-server aus.

kann ich nun einfach über eine jdbc-query wie 



```
use foo;
```

die datenbank wechseln oder muss ich jedesmal eine neue connection aufbauen?
weil wenn ich die connection aufbaue gebe ich ja gleich die datenbank mit an zu der die verbindung aufgebaut werden, kann ich die nun so einfach wechseln?

die api-doku von sun hat mich nicht weitergebracht und selber testen kann ich leider gerade auch nicht...

danke für jede hilfe!


----------



## jollyroger (3. Mrz 2006)

ok, 

ich bin jetzt zum testen gekommen und hab festgestellt das das so ohne probleme geht.

thread kann gelöscht werden.


----------



## fiffi00 (27. Sep 2006)

Hallo,
die Datenbankverbindung hab ich auch so hinbekommen:


```
public void VerbindungÖffnen(String server, String usr, String pwd) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
		String verb = null;
		Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
		verb = "jdbc:microsoft:sqlserver://" + server + ":1433";
		con = java.sql.DriverManager.getConnection(verb,usr,pwd);
	}
```

Nun soll der Benutzer über eine GUI sich die Datenbank auswählen, auf der er arbeiten will:


```
public ResultSet Datenbankuesicht() throws SQLException{
		
		ResultSet result;
		stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE );
		strQuery="exec sp_HelpDB";
		result = stmt.executeQuery( strQuery );
		return result;
	}
```

damit bekomm ich alle Datenbanken angezeigt.

Wenn der Benutzer sich jetzt eine Datenbank auswählt, wie kann ich mich auf die jetzt verbinden??
hier ist meine Methode dafür, sie funktioniert leider nicht :-(

```
public void Datenbankauswaehlen(int datenbank_verwenden, ResultSet result) throws SQLException{
		ResultSet ergebnis;		
		result.absolute(datenbank_verwenden+1);		
		stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE );
		strQuery="USE " +result.getString(1);
		
                ergebnis = stmt.executeQuery(strQuery);
		
		//System.out.println(strQuery);
		
	}
```
Der Fehler tritt bei stmt.executeQuere(strQuery) auf. Die strQuery wird aber richtig reingeschrieben, irgendwie klappt das mit dem USE nicht. Weiß aber nicht, was ich ändern soll. Bin um Hilfe sehr dankbar!!

Viele Grüße
fiffi00


----------

