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:
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
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 2.5