Toon posts:

[Java] Van database veranderen met JDBC...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een proggie die een MySQL database connectie gebruikt.

Nu moet het programma gegevens halen uit verschillende databases (op 1 database server).

Maar bij de JDBC connectie string geeft je de database naam al mee van de database die gebruikt gaat worden.

Als ik nu na het connecten een query wil uitvoeren op een andere database, moet ik dan opnieuw een connectie leggen? Moet ik dan nu 2 database connecties open?

Of is er een methode om van database te wisselen?


Ter info: Ik gebruik JDK 1.4.1 met Connector/J 3.0.4 als driver

  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
Je kan een jdbc connectie openen op een database maar niet op twee. De verbinding wordt in stand gehouden dus je kan niet zomaar een van de twee van eigenschap verandern.

Je meot dus gebruik gaan maken van minimaal twee verbindingen.

Leeg


Verwijderd

Topicstarter
Er is dus geen mogelijkheid om op de dezelfde server ff van database te wisselen?
Om nou meerdere connecties te openen kan nooit de bedoeling zijn lijkt me :S ?

php heeft daar bijvoorbeeld de handig functie mysql_select_db() voor, dat moet met Java toch ook kunnen?

  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
Verwijderd schreef op 17 January 2003 @ 18:30:
Er is dus geen mogelijkheid om op de dezelfde server ff van database te wisselen?
Om nou meerdere connecties te openen kan nooit de bedoeling zijn lijkt me :S ?

php heeft daar bijvoorbeeld de handig functie mysql_select_db() voor, dat moet met Java toch ook kunnen?
Ik heb geen idee maar bij php maak je idd eerst de verbinding en dan geef je hem de db naam mee. In java doe je dit altijd meteen bij het maken van de verbinding en weet niet of dit gescheiden kan.

Leeg


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Wat is het probleem met het vervangen van het connection object dat je al had, door een nieuw, die naar de nieuwe database wijst?

Je kunt desnoods beide databases tegelijk open hebben (door 2 connection objecten te maken), dat kan PHP dus weer niet met die functie. (als ik het goed begrijp).

FireFox - neem het web in eigen hand


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Java:
1
2
3
4
5
6
7
String connectionURL = "jdbc:mysql://localhost/database1?user=Erkens&password=woei";
Class.forName("com.mysql.jdbc.Driver").newInstance (); 
conn = DriverManager.getConnection(connectionURL); 
// doe wat je met "database1" wilt doen

conn.setCatalog("database2");
// database2 @ your service :P

[ Voor 103% gewijzigd door Erkens op 17-01-2003 22:29 ]


  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
PommeFritz schreef op 17 January 2003 @ 22:23:
Wat is het probleem met het vervangen van het connection object dat je al had, door een nieuw, die naar de nieuwe database wijst?

Je kunt desnoods beide databases tegelijk open hebben (door 2 connection objecten te maken), dat kan PHP dus weer niet met die functie. (als ik het goed begrijp).
Ik zie het probleem van twee connecties ook niet echt. De TS wel denk ik :?

Leeg


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-08 19:22
Lijkt mij logisch als je verschillende databases hebt dat je dat ook verschillende connecties moet maken. Als je bijvoorbeeld aan je constructor het type database meegeeft, zoals MySql, Access, oracle enzo, plus waar je db staat ben je klaar toch.? Zo zou ik het oplossen.

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

reskobon schreef op 17 January 2003 @ 22:27:
[...]


Ik zie het probleem van twee connecties ook niet echt. De TS wel denk ik :?
het punt is dat je dan weer opnieuw moet connecten wat weer wat ms kost ;)
en als je alleen maar 1 ding in een andere database moet doen en je hebt toch nog een connectie open, waarom dan niet hergebruiken ;)

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Okay wacht even. Voor alle duidelijkheid: het gaat hier dus om verschillende Logische Databases binnen 1 Database Server, en niet over verschillende connecties naar verschillende database servers (die op andere machines draaien bijvoorbeeld).

Dus het stukkie van Erkens
Java:
1
2
conn.setCatalog("database2");
// database2 @ your service :P
(waarvan ik het bestaan ook niet kende :) ) is dus de oplossing op de vraag van TS...

FireFox - neem het web in eigen hand


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

PommeFritz schreef op 17 January 2003 @ 22:42:
Dus het stukkie van Erkens
Java:
1
2
conn.setCatalog("database2");
// database2 @ your service :P
(waarvan ik het bestaan ook niet kende :) ) is dus de oplossing op de vraag van TS...
ik wist het ook niet, maar toevallig was ik er net mee aan het testen :P
zo heb je (uiteraard) ook een getCatalog, die een String levert, aangezien ik dus wat aan het testen was had ik die naar System.out geduwt, en ik kreeg de database naam terug, en toen kwam ik dit topic tegen :P

Verwijderd

Als je die andere databse kan bereiken met hetzelfde login/wachtwoord zou je je SQL zodanig kunnen bouwen dat je met diezelfde verbinding de database kan aanspreken.
Bijvoorbeeld je hebt de database FirstDB geselecteerd staan maar je wil ook uit OtherDB wat lezen. Dan doe je iets als
SELECT FirstDB.*, OtherDB.*
FROM FirstDB.users u1, OtherDB.users u2
WHERE u1.user_id = u2.user_id
Pagina: 1