Omet navegació

7.1.2 - Connexió

Per a poder establir una connexió des de l'aplicació Java fins la Base de Dades (en el nostre cas eXist) necessitem dos objectes:

 

XQDataSource

Servirà per a identificar l'origen de dades. A partir d'ell crearem les connexions (similars a sessions). De forma genèrica seria:

val xqs = ClasseEspecíficaQueGeneraXQDataSource()

que en el cas concret dels SGBD-XML natives més comuns s'haurà de particularitzar en:

  • eXist serà ExistXQDataSource() .
  • BaseX seria BaseXQDataSource()
  • Sedna seria SednoXQDataSource()

I aquesta seria l'única diferència entre utilitzar un o un altre SGBD-XML natives, a banda de les dades de connexió.

Com que en aquestos apunts únicament utilitzarem eXist-db, la nostra classe serà ExistXQDataSource()

La manera d'indicar el servidor, port, usuari i contrasenya és per mig del mètode setProperty()  Aquest seria un exemple, on connectem al servidor situat en la mateixa màquina, al port 8080 (que és el port per defecte), i com a usuari admin (admin), encara que si només volem fer consultes, no caldrà autenticar-nos. És a dir, que podem prescindir de les 4 últimes sentències:

val s = ExistXQDataSource()
s.setProperty("serverName", "localhost")
s.setProperty("port", "8080")
s.setProperty("user", "admin")
s.setProperty("password", "admin")

 

 XQConnection

Representa una connexió, una sessió. Mantindrà informació d'estat, transaccions, consultes executades i resultats.

val conn = s.getConnection()

També es podria passar l'usuari i contrasenya en el moment de fer la connexió (encara que ja hem comentat que no ens caldrà autenticar-nos per a fer només consultes):

val conn = s.getConnection("admin","admin")

I en finalitzar, hem de recordar tancar aquesta connexió:

conn.close()

 Aquest seria un exemple on únicament avisem que hem pogut connectar. El podem fer en un projecte nou, anomenat Tema9, dins del paquet exemples, i amb el nom Prova01_XQJ.kt

import net.xqj.exist.ExistXQDataSource

fun main() {
	val s = ExistXQDataSource();
	//s.setProperty("serverName", "localhost")
	//s.setProperty("port", "8080")
	//s.setProperty("user", "admin")
	//s.setProperty("password", "admin")

	val conn = s.getConnection()
	println("Connexió feta")	
}

Si volem connectar a un servidor diferent del local,per exemple el servidor de l'Institut, haurem d'especificar la propietat del serverName. Copieu el següent exemple amb el nom Prova02.kt:

import net.xqj.exist.ExistXQDataSource

fun main() {
    val s = ExistXQDataSource();
    s.setProperty("serverName", "89.36.214.106")
    //s.setProperty("port", "8080")

    val conn = s.getConnection()
    println("Connexió feta")
}

Nota

Si heu tingut problemes amb la instal·lació de eXist-db, utilitzeu sempre la connexió al servidor de l'Institut