From 30c38f78018c160fdeb44175e4ef97f0c2868b37 Mon Sep 17 00:00:00 2001 From: polo Date: Sat, 15 Feb 2025 15:25:40 +0100 Subject: release candidate 3 --- src/modele/dao/JDBC.java | 92 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/modele/dao/JDBC.java (limited to 'src/modele/dao/JDBC.java') diff --git a/src/modele/dao/JDBC.java b/src/modele/dao/JDBC.java new file mode 100644 index 0000000..3e05865 --- /dev/null +++ b/src/modele/dao/JDBC.java @@ -0,0 +1,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(); + } +} -- cgit v1.2.3