![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8uTazvyAc-LiJjHTdkzp9-jWE4Jwg5ayAnm-yeYtSRFwyTQk8jrJ0AqtoLARIC9gQV1s3HE_3E-sGcHzVLSMBelZeVtOvC3o2qx8f7aPO1upp5g1PpdmvT5t7Bc1_zPRD3IKikBUxDRxe/s1600/JDBC.jpg)
En aquesta entrada us ensenyaré a mantenir una connexió entre la BD i el nostre projecte Java, més endavant ja tractaré les queries i les dades que obtenim d'aquestes: comencem la casa pels fonaments doncs.
Prèvis a la connexió
Nosaltres treballarem amb un model DBMS, però aquests pasos es poden seguir també amb altres sistemes, només haurem d'afegir el driver de connexió adequat. Nosaltres doncs farem servir el driver JDBC i per treballar amb aquest necessitarem triar una d'aquestes dos opcions:
-DriverManager i DataSource
Jo treballo normalment amb la classe Drivermanager on es connecta una aplicació a una font de dades, especificada en forma de URL. Quan aquesta classe intenta per primer cop establir una connexió, automàticament carrega qualsevol driver JDBC que troba entre el path de la classe. En cas que treballéssim en un entorn com Eclipse o Netbeans, els hauríem d'afegir prèviament al projecte. És fàcil de treballar-hi i completa
Primer doncs haurem de descarregar-nos el driver per efectuar la connexió (el podeu obtenir d'aquí), és important que controleu que la versió del driver és compatible amb el vostre Java_version (jo utilitzo driver 5.1.21 i Java 1.6). El codi que aquí exposaré està pensat per a MySQL, base de dades que actualment tinc el local. El codi canvia lleugerament entre unes i altres BD de SQL però cal tenir-ho present.
Hi ha vàries maneres de crear l'estructura, jo sóc preferible a tenir la informació de la connexió en un fitxer apart de l'aplicació per seguretat. Crearem un fitxer config.cfg amb la següent informació:
host= "Ip d'on tenim la BD establerta"
database= "nom de la taula"
user= "usuari"
password= "pass"
i crearem dos classes java diferent: l'encarregada de capturar les dades del fitxer (l'anomenarem Configuration.java) i l'encarregada d'establir la connexió (ConnectionAction.java).
Configuration.java
public class Configuration{
//Sera de tipus Properties per obtenir la informacio d'una manera mes encapsulada
Properties configFile;
public Configuration(File cfg){
//constructor a traves de fitxer
configFile = new java.util.Properties();
try {
configFile.load(new FileInputStream(cfg));
}catch(Exception e){
System.err.println(e.getMessage());
}
}
public String getPropietat(String key){
//l'utilitzarem per obtenir els valors
String value = this.configFile.getProperty(key);
return value;
}
public int getNValors(){
//quantitat de valors que tenim
return this.configFile.size();
}
}
ConnectionAction.java
public class ConnectionAction {
public ConnectionAction() {
//constructor buit
}
static Connection connection = null; //objecte de la connexio
public static Connection getConnection() throws InstantiationException,
IllegalAccessException, ClassNotFoundException {
File ff=new File("config.cfg");
Configuration cfl=new Configuration(ff);
String host= cfl.getPropietat("host");
String db=cfl.getPropietat("database");
String user= cfl.getPropietat("user");
String password= cfl.getPropietat("password");
try {
if ( (connection == null) || (connection.isClosed()) ) {
//si no existeix connexio o esta tancada
//mantenim la codificacio UTF
String url = "jdbc:mysql://"+host+":3306/"+db+"?
useUnicode=true&characterEncoding=utf-8&";
//el nom del driver, important!
Class.forName("com.mysql.jdbc.Driver").newInstance();
//com hem comentat abans, cridem la classe DriverManager d'aquest
connection = DriverManager.getConnection(url, user, password);
}
} catch (SQLException e) {
System.err.println(e.getMessage());
System.out.println("Error en la connexio");
}
return connection;
}
public static void close(){
//per tancar la connexio
try {
connection.close();
} catch (SQLException e) {
System.err.println(e.getMessage());
}
}
}
Exemple d'utilització
Ara només caldrà incloure la connexió al nostre codi d'una manera tan simple com:
Connection con;
try {
con = ConnectionAction.getConnection();
}
catch (InstantiationException e) {
e.printStackTrace();
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
A la següent entrada us ensenyaré com treballar amb aquesta connexió i realitzar queries a la BdD.
Recordo que qualsevol codi aquí mostrat, si no s'indica el contrari, manté el dret d'autor d'una servidora com autora, es poden copiar, utilitzar i modificar, però manté sempre l'autor original.
0 Comentarios