MySQL.java :  » Client » network-chat-project » NCP_server » util » db » Android Open Source

Android Open Source » Client » network chat project 
network chat project » NCP_server » util » db » MySQL.java
package ncp_server.util.db;



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Properties;

import ncp_server.util.Log;
import ncp_server.util.option.Option;


/**
 * La class MySQL permettra la liason entre le serveur de chat et le serveur MySQL.
 * @author Poirier Kevin
 * @version 2.1.1
 *
 */

public class MySQL {
  /**
   * l'objet connexion servira pour la connexion  la base de donnes MySQL.
   */
  protected Connection connexion;
  /**
   * La chaine db permettra de recupr l'adresse du serveur MySQL et quel base de donnes utiliser.
   */
  protected String db;
  /**
   * La chaine user recevra l'identifiant de connexion au serveur MySQL.
   */
  protected String user;
  /**
   * La chaine pwd recevra le mot de passe de connexion au serveur MySQL.
   */
  protected String pwd;
  /**
   * L'objet option permettra de rcuprer les option de connexion  la base de donnes.
   * @see Option
   */
  protected Option option;
  /**
   * Variable log qui permet la gestion des message d'erreur.
   * @since 1.2.0
   */
  protected Log log;
  private static MySQL instance;

  /**
   * Constructeur de la class MySQL.
   * Recupre les options du serveur pour la base de donnes  partir du fichier
   * @see Option
   */
  public MySQL(){
    this.option=Option.getInstace();
    this.db=option.getDbMySQL();
    this.user=option.getUserMySQL();
    this.pwd=option.getPwdMySQL();
    this.log=Log.getInstance();
    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      this.connexion=this.connectToBDD();
      System.out.println("[OK]");
    }
    catch (Exception e) {
      System.err.println("[FAIL]");
      //e.printStackTrace();
      System.err.println("Unable to find and load driver");
      this.log.err("Unable to find and load driver");
      this.log.exit();
      System.exit(1);
    }

  }
  /**
   * Methode singleton qui permet d'assurer une seul instance de la classe.
   * @return instance
   */
  public static MySQL getInstance(){
    if(null == instance){
      instance = new MySQL();
    }
    return instance;
  }
  /**
   * Permet de fermer la connexion  la BDD.
   * @since 2.0.0
   */
  public void closeBDD(){
    try {
      connexion.close();
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      displaySQLErrors(e);
      System.err.println(e.getMessage()+"\n"+e.getSQLState()); 
      this.log.err(e.getMessage()+"\n"+e.getSQLState());
    }
  }
  /**
   * Permet la connexion  la base de donnes/
   * @return connexion
   */
  private Connection connectToBDD(){
    try {
      Properties props = new Properties();
      props.setProperty("user",this.user);
      props.setProperty("password",this.pwd);
      props.setProperty("autoReconnect", "true");
      this.connexion = DriverManager.getConnection(this.db,props);
    }
    catch(SQLException e) {
      System.err.println("[FAIL]");
      displaySQLErrors(e);
      this.log.exit();
      System.exit(1);
    }
    return connexion;

  }
  /**
   * Gestion des erreurs SQL.
   * @param e
   */
  public void displaySQLErrors(SQLException e) {
    System.out.println("SQLException: " + e.getMessage());
    this.log.err("SQLException: " + e.getMessage());
    System.out.println("SQLState:     " + e.getSQLState());
    this.log.err("SQLState:     " + e.getSQLState());
    System.out.println("VendorError: " + e.getErrorCode());
    this.log.err("VendorError: " + e.getErrorCode());
  }
  /**
   * @return the connexion
   * @since 2.0.0
   */
  public Connection getConnexion() {
    return connexion;
  }
  //La mthode selectSQL est surcharg pour recuperer le nombre d'element ncessaire qui sont renvoy dans un arrayList.
  /**
   * Cette mthode effectue une requete SQL renvoyant un seul lement par rsultat dans un ArrayList
   * @param prState
   * @param elem
   * @return Une ArrayList contenant les diffrents rsultat de la requete
   */
  public ArrayList<String> selecSQL(PreparedStatement prState, ArrayList<String> elem){
    ArrayList<String> resultatSelect = null ;
    try {
      PreparedStatement prepState = prState; 
      ResultSet rs = prepState.executeQuery();
      while (rs.next()) {
        if (resultatSelect==null){
          resultatSelect=new ArrayList<String>();
        }
        if(elem.size()==1)
          resultatSelect.add(rs.getString(elem.get(0)));
        else if (elem.size()==2)
          resultatSelect.add(rs.getString(elem.get(0))+" "+rs.getString(elem.get(1)));
        else if(elem.size()==3)
          resultatSelect.add(rs.getString(elem.get(0))+" "+rs.getString(elem.get(1)+" "+rs.getString(elem.get(2))));
        else if(elem.size()==4)
          resultatSelect.add(rs.getString(elem.get(0))+" "+rs.getString(elem.get(1))+" "+rs.getString(elem.get(2))+" "+rs.getString(elem.get(3)));
        else
          System.err.println("Erreur dans les lements de la requete sql.");
      }
      rs.close();
      prepState.close();
    }
    catch(SQLException e) {
      displaySQLErrors(e);
    }
    return resultatSelect;
  }
  /**
   * Setter de la variable db.
   * @param db
   */
  public void setDb(String db) {
    this.db = db;
  }

  /**
   * Setter de la variable pwd.
   * @param pwd
   */
  public void setPwd(String pwd) {
    this.pwd = pwd;
  }
  /**
   * Setter de la variable user.
   * @param user
   */
  public void setUser(String user) {
    this.user = user;
  }
  /**
   * Methode qui permet de faire des INSERT / UPDATE / DROP
   */
  public void updateSQL(PreparedStatement prState){
    try {
      PreparedStatement prepState = prState;
      prepState.executeUpdate();    
      prepState.close();      
    }
    catch(SQLException e) {
      displaySQLErrors(e);
      System.err.println(e.getMessage()+"\n"+e.getSQLState()); 
      this.log.err(e.getMessage()+"\n"+e.getSQLState());
    }
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.