/**
* @(#) UserDbManager.java
* @author Olivier Clavel
* @version 0.1
*/
import org.gjt.mm.mysql.Connection;
import org.gjt.mm.mysql.Statement;
import org.gjt.mm.mysql.Driver;
import org.gjt.mm.mysql.ResultSet;
import java.sql.*;
import java.util.Vector;
/**
* Permet de se connecter à une table test dans MySql sur Tecfasun5, de faire des SELECT, UPDATE et INSERT
*/
public class UserDbManager {
String url, user, password, query, table;
Connection con;
Statement stmt;
int resultRows;
ResultSet rs;
Vector resultVector;
/**
* Construit une instance du Manager permettant d'agir sur la table zeittest
* de la base de donnée test MySql de Tecfasun5
* url = "jdbc:mysql://tecfasun5.unige.ch:3306/test";
* user = "nobody";
* password = null;
* table = "zeittest";
*/
public UserDbManager() {
// initialisation des variables de connection
url = "jdbc:mysql://tecfasun5.unige.ch:3306/test";
user = "clavel";
password = "iloveu2";
table = "zeittest";
resultVector = new Vector(3);
}
/**
* Regarde si le drivers MySql sont présent et retourne un message
*/
public String testDrivers () {
String message;
try {
Class.forName("org.gjt.mm.mysql.Driver");
message = "Database driver Class Found";
} catch(Exception ex) {
message = "Can't find Database driver class: " + ex;
}
return message;
}
/**
* Essaye de créer la connection et renvoi un message
*/
public String testConnection () {
String message;
try {
con = (Connection) DriverManager.getConnection(url, user, password);
message = "Connected to " + url;
} catch(SQLException ex) {
message = "SQLException: " + ex;
}
return message;
}
/**
* Ferme la connection vers la base de donnée et donne le resultat
*/
public boolean closeConnection() {
boolean result;
try {
con.close();
result = true;
} catch (Exception e) {
e.printStackTrace();
result = false;
}
return result;
}
/**
* retourne la dernière Id dans la table
*/
public int getLastId() {
query = "SELECT id FROM " + table + " ORDER BY id";
int lastId = 0;
try {
stmt = (Statement)con.createStatement();
rs = (ResultSet)stmt.executeQuery(query);
while (rs.next()) {
lastId = rs.getInt("id");
}
} catch (Exception ex) {
ex.printStackTrace();
lastId = -1;
}
return lastId;
}
/**
* Ajoute une ligne de donnée dans la table et retourne le résultat
* @param firstName Le prénom
* @param lastName Le Nom de famille
* @param personCat La catégorie de la personne
*/
public boolean addQuery(String firstName, String lastName, String personCat) {
boolean result;
query = "INSERT INTO " + table + " VALUES (NULL, '" + firstName + "', '" + lastName + "', '" + personCat + "')";
try {
stmt = (Statement)con.createStatement();
resultRows = (int)stmt.executeUpdate(query);
result = true;
} catch (Exception ex) {
ex.printStackTrace();
result = false;
}
return result;
}
/**
* Met à jour un enregistrement de la base et retourne le résultat
* @param id l'identificateur de la ligne
* @param firstName Le prénom
* @param lastName Le Nom de famille
* @param personCat La catégorie de la personne
* @return result vrai si c'est fait/ faux si ya erreur
*/
public boolean updateQuery(int id, String firstName, String lastName, String personCat) {
boolean result;
query = "UPDATE " + table + " SET firstName='" + firstName + "', lastName='" + lastName + "', personCat='" + personCat + "' WHERE id=" + id;
try {
stmt = (Statement)con.createStatement();
resultRows = (int)stmt.executeUpdate(query);
result = true;
} catch (Exception ex) {
ex.printStackTrace();
result = false;
}
return result;
}
/**
* selectionne une ligne dans la base et retourne Vrai/Faux
* @param id l'identificateur de la ligne
* @return result vrai si c'est fait/ faux si ya erreur
*/
public boolean selectQuery(int id) {
boolean result;
query = "SELECT * FROM " + table + " WHERE id=" + id;
try {
stmt = (Statement)con.createStatement();
rs = (ResultSet)stmt.executeQuery(query);
resultVector.clear();
while (rs.next()) {
resultVector.add(rs.getString("firstName"));
resultVector.add(rs.getString("lastName"));
resultVector.add(rs.getString("personCat"));
}
result = true;
} catch (Exception ex) {
ex.printStackTrace();
result = false;
}
return result;
}
/**
* Retourne le prenom du select en cours
* @return firstName le prenom
*/
public String getFirstName () {
String firstName = (String)resultVector.get(0);
return firstName;
}
/**
* Retourne le nom du select en cours
* @return lastName le nom
*/
public String getLastName () {
String lastName = (String)resultVector.get(1);
return lastName;
}
/**
* Retourne la catégorie du select en cours
* @return category la categorie
*/
public String getCategory () {
String category = (String)resultVector.get(2);
return category;
}
}