summaryrefslogtreecommitdiff
path: root/src/modele/dao/JDBC.java
blob: 3e05865b36967b807fc62ee0e0d765de032bc338 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package modele.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * connexion avec JDBC pour utilisation par la classe fille: SQLexecutor,
 * les paramètres de connexion et les setters sont statiques
 *  
 */
abstract public class JDBC
{
	private static String dbms="mysql";
	private static String strClassName = "com.mysql.cj.jdbc.Driver";
	private static String port = "3306";
	private static String dbname;
	private static String login;
	private static String password;
	private static String host= "localhost";
	private static String strUrl;
	
	/**
	 * retourne une instance de Connection avec JDBC
	 * @return instance de Connection
	 * @throws SQLException en cas d'erreur de connexion
	 * @throws ClassNotFoundException pour Class.forName()
	 */
	protected Connection getConnection() throws SQLException, ClassNotFoundException
	{
		Class.forName(strClassName);
		return DriverManager.getConnection(strUrl, login, password);
	}
	
	// setters
	/**
	 * génère l'url utilisée par le driver,
	 * à n'exécuter que lorsque tous les paramètres ont été renseignés (en particulier dbname, login et password),
	 * certains: host, dbms, strClassName et port ont des valeurs par défaut pour un serveur mysql sur localhost
	 */
	public static void setStrUrl() {
		if(dbname != null && login != null && password != null) {
			JDBC.strUrl = "jdbc:" + dbms + "://" + host + ":" + port + "/" +  dbname;
		}
		else System.out.print("il manque des paramètres nécéssaires à la connexion au driver");
	}
	
	public static void setHost(String host) {
		JDBC.host = host;
	}
	public static void setDBMS(String dbms) {
		JDBC.dbms = dbms;
		if(dbms == "mysql")
		{
			JDBC.strClassName = "com.mysql.cj.jdbc.Driver";
			JDBC.port = "3306";
		}
		else if(dbms == "mariadb")
		{
			JDBC.strClassName = "org.mariadb.jdbc.Driver";
			JDBC.port = "3306";
		}
	}
	public static void setDbName(String dbName) {
		JDBC.dbname = dbName;
	}
	public static void setLogin(String login) {
		JDBC.login = login;
	}
	public static void setPassword(String motdepasse) {
		JDBC.password = motdepasse;
	}
	
	/**
	 * donner tous les paramètres de connexion en une fois
	 * il est également possible de les donner un par un avec les setters en finissant pas JDBC.setStrUrl()
	 * @param host adresse du serveur
	 * @param dbms obtenir le nom du driver et le numéro du port à partir du nom du SGBD
	 * @param dbname de la base de données
	 * @param login nom d'utilisateur
	 * @param password mot de passe
	 */
	public static void setInfos(String host, String dbms, String dbname, String login, String password)
	{
		JDBC.dbname = dbname;
		JDBC.login = login;
		JDBC.password = password;
		JDBC.host = host;
		setDBMS(dbms);
		JDBC.setStrUrl();
	}
}