Merge pull request #7 from NyxiumYuuki/Nico_Creation_Methodes_vides

Nico creation methodes vides
This commit is contained in:
Yûki VACHOT 2021-02-01 18:45:24 +01:00 committed by GitHub
commit d174d71f2a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 1296 additions and 31 deletions

View file

@ -1,32 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.7.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-simple:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:win:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:win:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:win:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-fxml:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-fxml:win:15" level="project" />
</component>
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.7.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-simple:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:win:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:win:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:win:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-fxml:15" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-fxml:win:15" level="project" />
</component>
</module>

View file

@ -0,0 +1,629 @@
package fr.myny.database;
import java.sql.*;
import java.util.*;
import java.io.*;
/**
* La classe DataBase qui soccupera de la base de donnees
*/
public class DataBase {
//public static String url="jdbc:mariadb://vachot.fr:3306?user=mynynicolas&password=Bw0po64*";
public static final int NBCOL =25;//le nombre de coldu fichier csv
public static final String url="jdbc:mariadb://phpmyadmin.vachot.fr:3306?db=myny&user=mynynicolas&password=Bw0po64*";//l'acces à la db
public Connection conn;//la connexion a la db
/**
* La methode de connection
* @return conn la connection a la db
*/
public Connection getConnection() {
conn = null;
try {
conn = DriverManager.getConnection(url);
//conn = DriverManager.getConnection("jdbc:mariadb://vachot.fr:3306?user=mynynicolas&password=Bw0po64*");
//conn = DriverManager.getConnection("jdbc:mariadb://phpmyadmin.vachot.fr:3306/myny?user=mynynicolas&password=Bw0po64*");
//conn = DriverManager.getConnection("jdbc:mariadb:../../../../../../test.db");
if(conn!=null) {
System.out.println("Connecte a la db");
System.out.println(conn);
}
}catch(SQLException e) {
System.out.println("getConnection on a des pb:" + e.getMessage());
}
return conn;
}
/**
* La methode de creation de la table
* <p>stmt Statement la variable pour creer la declaration</p>
* <p>sql String la requete</p>
* @return res, int le resultat de la requete (nb de ligne affectees)
*/
public int createTable() {
int res=-1;
Statement stmt;
String sql="CREATE TABLE IF NOT EXISTS myny.Test_Table ("+ //declaration de la table, de ses colonnes et de leur type et leur taille (on aurai pu ajouter des param supplementaires)
" annee_numero_de_tirage INTEGER,"+ //1 long
" jour_de_tirage VARCHAR(10),"+ //2 String
" date_de_tirage DATE,"+ //3 String
" date_de_forclusion DATE,"+ //4 String
" boule_1 TINYINT,"+ //5 long
" boule_2 TINYINT,"+ //6 long
" boule_3 TINYINT,"+ //7 long
" boule_4 TINYINT,"+ //8 long
" boule_5 TINYINT,"+ //9 long
" numero_chance TINYINT,"+ //10 long
" combinaison_gagnante_en_ordre_croissant varchar(20),"+//11 String
" nombre_de_gagnant_au_rang1 INTEGER,"+ //12 long
" rapport_du_rang1 float(53),"+ //13 double
" nombre_de_gagnant_au_rang2 INTEGER,"+ //14 long
" rapport_du_rang2 float(53),"+ //15 double
" nombre_de_gagnant_au_rang3 INTEGER,"+ //16 long
" rapport_du_rang3 float(53),"+ //17 double
" nombre_de_gagnant_au_rang4 INTEGER,"+ //18 long
" rapport_du_rang4 float(53),"+ //19 double
" nombre_de_gagnant_au_rang5 INTEGER,"+ //20 long
" rapport_du_rang5 float(53),"+ //21 double
" nombre_de_gagnant_au_rang6 INTEGER,"+ //22 long
" rapport_du_rang6 float(53),"+ //23 double
" numero_jokerplus INTEGER,"+ //24 long
" devise VARCHAR(10));"; //25 String
//System.out.println(sql);
try {
if(conn==null) {
conn = DriverManager.getConnection(url); //connection a la db
}
if(conn!=null) {
stmt = conn.createStatement(); //creation de la declaration
res=stmt.executeUpdate(sql); //execution de la declaration
//stmt.executeQuery(sql);
conn.commit();
//conn.close();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("create table probleme, verifier si le pb ne vient pas de executeupdate au lieu executequery");
System.out.println(e.getMessage());
}
return res;
}
/**
* La methode de remplissage de la base de donnees
* <p>line String la ligne a ajouter</p>
* <p>i int, un compteur de valeurs lues,</p>
* <p>j int, qui suit i%NBCOL</p>
* <p>nbValAj int qui augmente si on doit ajouter des lignes</p>
* <p>date String, la valeur de la date lue</p>
* <p>jour String, le jour lu</p>
* <p>mois String, le mois lu</p>
* <p>an String, l annee lue</p>
* <p>mesL tableau dans lequel seront stockes tous les long</p>
* <p>mesS tableau dans lequel seront stockes tous les String</p>
* <p>mesD tableau dans lequel seront stockes tous les Double</p>
* <p>sc Scanner, l objet qui servira a lire le fichier csv</p>
* @param filePath String le fichier et son chemin
* @return res int le resultat de la requete(nb de ligne affectees)
*/
public int fillTable(String filePath){
int res=-1;
Scanner sc;
int i=0,j, nbValAj=0;
String line="";
String date, jour, mois, an;
long[][] mesL=new long[4000][NBCOL+1];
String[][]mesS=new String[4000][NBCOL+1];
Double[][]mesD=new Double[4000][NBCOL+1];
String sql="INSERT INTO myny.Test_Table" +//definit la requete
" (annee_numero_de_tirage, "+
" jour_de_tirage, "+
" date_de_tirage,"+
" date_de_forclusion,"+
" boule_1 ,"+
" boule_2 ,"+
" boule_3 ,"+
" boule_4 ,"+
" boule_5 ,"+
" numero_chance ,"+
" combinaison_gagnante_en_ordre_croissant ,"+
" nombre_de_gagnant_au_rang1 ,"+
" rapport_du_rang1 ,"+
" nombre_de_gagnant_au_rang2 ,"+
" rapport_du_rang2 ,"+
" nombre_de_gagnant_au_rang3 ,"+
" rapport_du_rang3 ,"+
" nombre_de_gagnant_au_rang4 ,"+
" rapport_du_rang4 ,"+
" nombre_de_gagnant_au_rang5 ,"+
" rapport_du_rang5 ,"+
" nombre_de_gagnant_au_rang6 ,"+
" rapport_du_rang6 ,"+
" numero_jokerplus ,"+
" devise ) VALUES \n";
try {
sc = new Scanner(new File(filePath));//lire le fichier csv
sc.useDelimiter(";|\\n"); //definit les separateurs utilisés
sc.nextLine();//passe la premiere ligne, les metadonnees
while (sc.hasNext()){//tant qu'on a des champs non-vides, on va remplir la ligne et les cases specifiques des tableaux a 2 dim correspondant au champ lu
j=(i% NBCOL)+1;
if(j==1) {
line=line+"(?,";
mesL[nbValAj][j]=Long.parseLong(sc.next());
}
if(j< NBCOL && j>1) {
line = line + "?,";
if (j==2 ||j==11){
//line=line+"\'"+sc.next().replace(",",".")+"\',";
mesS[nbValAj][j] = sc.next().replaceAll("\\s", "");
}
else if (j==3 ||j==4){
date=sc.next().replace(",",".");
jour=date.substring(0,2);
mois=date.substring(3,5);
an=date.substring(6,10);
mesS[nbValAj][j]=an+"-"+mois+"-"+jour;
}
else if (j >= 13 && j <= 23 && j % 2 == 1) {//pour les col 3 et 4, il s'agit d'une date, on va donc passer dela forme jj-mm-aaaa a la forme aaaa-mm-jj
mesD[nbValAj][j] = Double.parseDouble(sc.next().replace(",", "."));
}
else {//pour les autres col, on va simplement les remplir
mesL[nbValAj][j] = Long.parseLong(sc.next().replaceAll("\\s", ""));
}
}
if(j== NBCOL) {
nbValAj++;
line=line+"?)";
mesS[nbValAj][j] = sc.next().replaceAll("\\s", "");
if(sc.hasNext()) {
line = line+ ",";
}
else{
line = line+ ";";
}
//System.out.println(line);
sql=sql+line;
line="";
}
i++;
}
System.out.println(sql);
}
catch (Exception e){
System.out.println(e.getMessage());
}
if (nbValAj>0) {//si on a des modifications
PreparedStatement ps;
try {
if (conn == null) {
conn = this.getConnection();
}
if (conn != null) {
ps=conn.prepareStatement(sql);
for(int a=0;a<nbValAj;a++){//pour chaque case de chaque ligne ajoutée, on va ajouter la valeur
for(int b=1;b<=NBCOL;b++){//dans la declaration preparee, pour eviter les injections sql
if((b>1&&b<5)||b==11||b==25){
System.out.println("a: "+a+" et b: "+b);
ps.setString((a)*25+b, mesS[a][b]);
}
else if(b > 12 && b < 24 && b % 2 == 1){
System.out.println("a: "+a+" et b: "+b);
if (b == 13) {
System.out.println(mesD[a][b]);
}
ps.setString((a)*25+b, mesD[a][b]+"");
}
else{
System.out.println("a: "+a+" et b: "+b);
ps.setString((a)*25+b, mesL[a][b]+"");
}
}
}
res=ps.executeUpdate();
//ps.executeQuery();//puis on execute la requete
System.out.println("update validee");
}
} catch (SQLException e) {
System.out.println("filldatebase probleme, verifier si le pb ne viens pas de executeupdate au lieu executequery");
System.out.println(e.getMessage());
}
}
return res;
}
/**
* La methode de mise a jour de la base de donnees
* @param filePath String, le chemin+nom du fichier+extension
* @return res int, le resultat de la requete(nb de ligne affectees)
* <p>sc Scanner, l objet qui servira a lire le fichier csv</p>
* <p>line String, ligne contenant l'ajout a effectuer</p>
* <p>i int, un compteur de valeurs lues,</p>
* <p>j int, qui suit i%NBCOL</p>
* <p>nbValAj int qui augmente si on doit ajouter des lignes</p>
* <p>date String, la valeur de la date lue</p>
* <p>jour String, le jour lu</p>
* <p>mois String, le mois lu</p>
* <p>an String, l annee lue</p>
* <p>anEntre long, valeur lue pour l annee et le numero de tirage. sert a definir si la valeur est a ajouter dans la table</p>
* @deprecated
*/
public int updateTable(String filePath) {
ResultSet rs=null;
Scanner sc;
int res=-1;
int i,j, nbValAj=0;
String date, jour, mois, an;
String line="";
long anEntre;
Statement stmt;
long maxvaldb;
String sql="INSERT INTO myny.Test_Table" + //le debut de la requete, specifiant laction a effectuer, la table et la db
" (annee_numero_de_tirage, "+
" jour_de_tirage, "+
" date_de_tirage,"+
" date_de_forclusion,"+
" boule_1 ,"+
" boule_2 ,"+
" boule_3 ,"+
" boule_4 ,"+
" boule_5 ,"+
" numero_chance ,"+
" combinaison_gagnante_en_ordre_croissant ,"+
" nombre_de_gagnant_au_rang1 ,"+
" rapport_du_rang1 ,"+
" nombre_de_gagnant_au_rang2 ,"+
" rapport_du_rang2 ,"+
" nombre_de_gagnant_au_rang3 ,"+
" rapport_du_rang3 ,"+
" nombre_de_gagnant_au_rang4 ,"+
" rapport_du_rang4 ,"+
" nombre_de_gagnant_au_rang5 ,"+
" rapport_du_rang5 ,"+
" nombre_de_gagnant_au_rang6 ,"+
" rapport_du_rang6 ,"+
" numero_jokerplus ,"+
" devise ) VALUES \n";
try {
conn = this.getConnection(); //initialisation de la connexion
if(conn!=null) { //si la co est bonne
sc = new Scanner(new File(filePath)); //lire le fichier donne
sc.useDelimiter(";|\\n"); //les delimiteurs seront ; et \n
sc.nextLine(); //on ne conserve pas la premiere ligne, contenant les metadonnees
anEntre=Long.parseLong(sc.next()); //lecture de l id en haut du tableau(donc le plus grand, cest ce qu on a constate en lisant le csv
//System.out.println("numero en haut du fichier csv :"+anEntre);
stmt = conn.createStatement(); //recuperation du nb de lignes dans la table
rs = stmt.executeQuery("SELECT MAX(annee_numero_de_tirage) FROM myny.Test_Table;");
rs.next();
maxvaldb=rs.getLong(1);
//System.out.println("numero max de la db :"+rs.getLong(1));
/*comme les nombres de la premiere col sont decroissants, le nb le plus grand est lu en premier,
on va donc lire les nombres jusqua arriver a la plus haute valeur entree dans la table. On ne
pourrait probablement pas utiliser cette methode pour remplir la table en entier*/
while(anEntre>maxvaldb) {
nbValAj++;//des quon rentre dans la boucle, on sait qu'on va devoir mettre a jour la table car cette valeur est>0
for (i = 0; i < NBCOL; i++) {//on remplit la ligne en effectuant une lecture par col
j = (i % NBCOL) + 1;
if (j == 1) {
line = line + '(';//debut de la ligne a jouter
line = line + anEntre;
line = line + ';';//on met un point virgule mais on le remplacera plus tard
//sc.next();
}
if (j < NBCOL && j > 1) {//pour chaque colonne, on va faire en sorte de mettre le champ dans la onne mise en fore pour qu'il soit accepté par la db
if (j == 2 || j == 11) {
line = line + "'" + sc.next().replace(",", ".") + "',";
} else if (j == 3 || j == 4) {//pour les col 3 et 4, il s'agit d'une date, on va donc passer dela forme jj-mm-aaaa a la forme aaaa-mm-jj
date = sc.next().replace(",", ".");
jour = date.substring(0, 2);
mois = date.substring(3, 5);
an = date.substring(6, 10);
line = line + "'" + an + "-" + mois + "-" + jour + "',";
} else {//pour les autres col, on va simplement les remplir
line = line + sc.next().replace(",", ".");
line = line + ';';
}
}
if (j == NBCOL) {//pour la derniere col
line = line + "'" + sc.next().replace(",", ".") + "'";
line = line + ')';//on la remplit
line = line.replaceAll("\\s", "");//on remplace les caracteres qui nous derangent
line = line.replaceAll(";", ",");
anEntre = Long.parseLong(sc.next());//on lit le prochain id de l'entree
if (anEntre > maxvaldb) {//on defini si on doit encore ajouter des lignes a la requete
line = line + ",";
} else {//ou si on doit cloturer la requete
line = line + ";";
}
//System.out.println(line);
sql = sql + line + "\n";//on ajoute la ligne a la requete
line = "";
}
}
}
System.out.println(sql);
if (nbValAj>0) {//on effectue la requete si on a des maj a faire
try {
conn = this.getConnection();
if (conn != null) {
stmt = conn.createStatement();
res=stmt.executeUpdate(sql);
//stmt.executeQuery(sql);
conn.commit();
//conn.close();
System.out.println("update validee");
}
} catch (Exception e) {
System.out.println("updateDataBase probleme");
System.out.println(e.getMessage());
}
}
}
} catch (Exception e) {
System.out.println("updateDataBase probleme");
System.out.println(e.getMessage());
}
return res;
}
/**
* La methode de mise a jour de la base de donnees 2 qui evite les injections sql
* @param filePath String, le chemin+nom du fichier+extension
* @return rs, int, le resultat de la requete (nb de lignes affectees)
* <p>mesL tableau dans lequel seront stockes tous les long</p>
* <p>mesS tableau dans lequel seront stockes tous les String</p>
* <p>mesD tableau dans lequel seront stockes tous les Double</p>
* <p>sc Scanner, l objet qui servira a lire le fichier csv</p>
* <p>line String, ligne contenant l'ajout a effectuer</p>
* <p>i int, un compteur de valeurs lues,</p>
* <p>j int, qui suit i%NBCOL</p>
* <p>a int, un compteur de lignes modifiees</p>
* <p>b int, un compteur de champs modifiees</p>
* <p>nbValAj int qui augmente si on doit ajouter des lignes</p>
* <p>date String, la valeur de la date lue</p>
* <p>jour String, le jour lu</p>
* <p>mois String, le mois lu</p>
* <p>an String, l annee lue</p>
* <p>anEntre long, valeur lue pour l annee et le numero de tirage. sert a definir si la valeur est a ajouter dans la table</p>
* <p>ps PreparedStatement pour executer la requete sans injection sql</p>
* <p>stmt Statement pour executer la requete de depart</p>
*/
public int updateTablev2(String filePath) {
//Ligne maL=new Ligne();
ResultSet rs=null;
int res=-1;
Statement stmt;
long[][] mesL=new long[4000][NBCOL+1];
String[][]mesS=new String[4000][NBCOL+1];
Double[][]mesD=new Double[4000][NBCOL+1];
Scanner sc;
long anEntre;
int i,j, nbValAj=0;
String date, jour, mois, an;
String line="";
String sql="INSERT INTO myny.Test_Table" + //le debut de la requete, specifiant laction a effectuer, la table et la db
" (annee_numero_de_tirage, "+
" jour_de_tirage, "+
" date_de_tirage,"+
" date_de_forclusion,"+
" boule_1 ,"+
" boule_2 ,"+
" boule_3 ,"+
" boule_4 ,"+
" boule_5 ,"+
" numero_chance ,"+
" combinaison_gagnante_en_ordre_croissant ,"+
" nombre_de_gagnant_au_rang1 ,"+
" rapport_du_rang1 ,"+
" nombre_de_gagnant_au_rang2 ,"+
" rapport_du_rang2 ,"+
" nombre_de_gagnant_au_rang3 ,"+
" rapport_du_rang3 ,"+
" nombre_de_gagnant_au_rang4 ,"+
" rapport_du_rang4 ,"+
" nombre_de_gagnant_au_rang5 ,"+
" rapport_du_rang5 ,"+
" nombre_de_gagnant_au_rang6 ,"+
" rapport_du_rang6 ,"+
" numero_jokerplus ,"+
" devise ) VALUES \n";
try {
conn = this.getConnection(); //initialisation de la connexion
if(conn!=null) { //si la co est bonne
sc = new Scanner(new File(filePath)); //lire le fichier donne
sc.useDelimiter(";|\\n"); //les delimiteurs seront ; et \n
sc.nextLine(); //on ne conserve pas la premiere ligne, contenant les metadonnees
anEntre=Long.parseLong(sc.next()); //lecture de l id en haut du tableau(donc le plus grand, cest ce qu on a constate en lisant le csv
stmt = conn.createStatement(); //recuperation du nb de lignes dans la table
rs = stmt.executeQuery("SELECT MAX(annee_numero_de_tirage) FROM myny.Test_Table;");
rs.next();
long maxvaldb=rs.getLong(1);
if (maxvaldb<0){
maxvaldb=0;
}
/*comme les nombres de la premiere col sont decroissants, le nb le plus grand est lu en premier,
on va donc lire les nombres jusqua arriver a la plus haute valeur entree dans la table. On ne
pourrait probablement pas utiliser cette methode pour remplir la table en entier*/
while(anEntre>maxvaldb&&sc.hasNext()) {
nbValAj++;//des quon rentre dans la boucle, on sait qu'on va devoir mettre a jour la table car cette valeur est>0
for (i = 0; i < NBCOL; i++) {//on remplit la ligne en effectuant une lecture par col
j = (i % NBCOL) + 1;
if (j == 1) {
line = line + "(?,";//debut de la ligne a jouter
mesL[nbValAj][j]=anEntre;
}
if (j < NBCOL && j > 1) {//pour chaque colonne, on va faire en sorte de mettre le champ dans la onne mise en fore pour qu'il soit accepté par la db
line = line + "?,";
if (j == 2 || j == 11) {
mesS[nbValAj][j] = sc.next().replaceAll("\\s", "");
} else if (j == 3 || j == 4) {//pour les col 3 et 4, il s'agit d'une date, on va donc passer dela forme jj-mm-aaaa a la forme aaaa-mm-jj
date = sc.next().replace(",", ".");
jour = date.substring(0, 2);
mois = date.substring(3, 5);
an = date.substring(6, 10);
mesS[nbValAj][j] = an + "-" + mois + "-" + jour ;
}
else if (j >= 13 && j <= 23 && j % 2 == 1) {//pour les col 3 et 4, il s'agit d'une date, on va donc passer dela forme jj-mm-aaaa a la forme aaaa-mm-jj
mesD[nbValAj][j] = Double.parseDouble(sc.next().replace(",", "."));
}
else {//pour les autres col, on va simplement les remplir
mesL[nbValAj][j] = Long.parseLong(sc.next().replaceAll("\\s", ""));
}
}
else if (j == NBCOL) {//pour la derniere col
line=line+"?)";
mesS[nbValAj][j] = sc.next().replaceAll("\\s", "");
anEntre = Long.parseLong(sc.next());//on lit le prochain id de l'entree
if (anEntre > maxvaldb) {//on defini si on doit encore ajouter des lignes a la requete
line = line + ",";
} else {//ou si on doit cloturer la requete
line = line + ";";
}
//System.out.println(line);
sql = sql + line + "\n";//on ajoute la ligne a la requete
line = "";
}
}
}
System.out.println(sql);
if (nbValAj>0) {//si on a des modifications
PreparedStatement ps;
try {
conn = this.getConnection();
if (conn != null) {
ps=conn.prepareStatement(sql);
for(int a=1;a<=nbValAj;a++){//pour chaque case de chaque ligne ajoutée, on va ajouter la valeur
for(int b=1;b<=NBCOL;b++){//dans la declaration preparee, pour eviter les injections sql
if((b>1&&b<5)||b==11||b==25){
System.out.println("a: "+a+" et b: "+b);
ps.setString((a-1)*25+b, mesS[a][b]);
}
else if(b > 12 && b < 24 && b % 2 == 1){
System.out.println("a: "+a+" et b: "+b);
ps.setString((a-1)*25+b, mesD[a][b]+"");
}
else{
System.out.println("a: "+a+" et b: "+b);
ps.setString((a-1)*25+b, mesL[a][b]+"");
}
}
}
res=ps.executeUpdate();//puis on execute la requete
//res=ps.executeQuery();//puis on execute la requete
System.out.println("update validee");
}
} catch (Exception e) {
System.out.println("updateDataBasev2 probleme");
System.out.println(e.getMessage());
}
}
}
} catch (Exception e) {
System.out.println("updateDataBasev2 probleme, verifier si le pb ne vient pas de executeupdate au lie de executequery");
System.out.println(e.getMessage());
}
return res;
}
/**
* la methode de selection de la ligne ayant la valeur i dans annee_numero_de_tirage
* @param i la valeur de reference
* @return rs, ResultSet le resultat de la requete
*/
public ResultSet showLine(int i){
ResultSet rs=null;
String sql="select * from myny.Test_Table where annee_numero_de_tirage ="+i;
try {
conn = this.getConnection();
if(conn!=null) {
Statement ps = conn.createStatement();
rs=ps.executeQuery(sql);
conn.commit();
//conn.close();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("removeLine probleme");
System.out.println(e.getMessage());
}
return rs;
}
/**
* la methode de suppression de la ligne ayant la valeur i dans annee_numero_de_tirage
* @param i la valeur de reference
* @return res, int le resultat de la requete(nb de lignes affectees)
*/
public int removeLine(int i){
int res=-1;
String sql="delete from myny.Test_Table where annee_numero_de_tirage ="+i;
try {
conn = this.getConnection();
if(conn!=null) {
Statement ps = conn.createStatement();
res=ps.executeUpdate(sql);
//res=ps.executeQuery(sql);
conn.commit();
//conn.close();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("removeLine probleme, voir si le pb ne vient pas d'execute query et executeupdate");
System.out.println(e.getMessage());
}
return res;
}
/**
* la methode de supression des lignes strictement superieures a la valeur i dans annee_numero_de_tirage
* @param i la valeur de reference
* @return res, int le resultat de la requete (nb de lignes affectees)
*/
public int removeMultiplesLines(int i){
int res=-1;
String sql="delete from myny.Test_Table where annee_numero_de_tirage >"+i;
try {
conn = this.getConnection();
if(conn!=null) {
Statement ps = conn.createStatement();
res=ps.executeUpdate(sql);
//ps.executeQuery(sql);
conn.commit();
//conn.close();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("removeLines probleme");
System.out.println(e.getMessage());
}
return res;
}
/**
* La methode pour supprimer la table entiere
* @return res int le resultat de la requete(nb de lignes affectees)
*/
public int dropTable(){
String sql="drop table myny.Test_Table";
int res=-1;
try {
conn = this.getConnection();
if(conn!=null) {
Statement ps = conn.createStatement();
//rs=ps.executeQuery(sql);
res=ps.executeUpdate(sql);
conn.commit();
//conn.close();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("dropTable probleme, voir si le pb ne vient pas d'execute query et executeupdate");
System.out.println(e.getMessage());
}
return res;
}
}

View file

@ -0,0 +1,474 @@
package fr.myny.stats;
import fr.myny.database.DataBase;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* La classe Statistics qui sert a donner le nombre d'appartition de chaque chiffre/combinaison (et leurs ID si besoin)
*/
public class Statistics {
public DataBase maDB;
public Connection conn;
public long numSelect[];
public int bonusSelect;
public long numId[][]; //liste des identifiants des lignes contenant un chiffre specifique
public long numCpt[][]; //total d'apparitions de chaque chiffre
public long bonusId[][]; //liste des identifiants des lignes contenant un chiffre bonus specifique
public long bonusCpt[][]; //total d'apparitions de chaque bonus
public long combi1Id[][]; //liste des identifiants des lignes cumulant 2 chiffres specifiques
public long combi1Cpt[]; //total d'apparitions de chaque chiffre qui correspond egalement a un premier chiffre sur la meme ligne
public long combi2Id[][]; //liste des identifiants des lignes cumulant 3 chiffres specifiques
public long combi2Cpt[]; //total d'apparitions de chaque chiffre qui correspond egalement aux 2 premiers chiffres sur la meme ligne
public long num1_bonusId[][]; //liste des identifiants des lignes cumulant 1 chiffre specifique et un numero bonus specifique
public long num1_bonusCpt[]; //total d'apparitions de chaque bonus qui correspond egalement au premier chiffre sur la meme ligne
public long num2_bonusId[][]; //liste des identifiants des lignes cumulant 2 chiffres specifiques et un numero bonus specifique
public long num2_bonusCpt[]; //total d'apparitions de chaque bonus qui correspond egalement aux 2 premiers chiffres sur la meme ligne
public long num3_bonusId[][]; //liste des identifiants des lignes cumulant 3 chiffres specifiques et un numero bonus specifique
public long num3_bonusCpt[]; //total d'apparitions de chaque bonus qui correspond egalement aux 3 premiers chiffres sur la meme ligne
public long taille;
/**
* Constructeur, charge d'initialiser les differents champs
* <p>Pour les tableaux, leurs tailles (de 4000) sont surevaluees pour pouvoir augmenter quandla table augmentera</p>
* <p>Une solution optimale serait de fonctionner par exmple avec des TreeMap ou des ArrayLists a la place, pour eviter</p>
* <p>d'utiliser trop de memoire inutilement</p>
*/
public Statistics(){
maDB=new DataBase();
conn= maDB.getConnection();
numSelect =new long[5];
numId =new long[50][4000];
numCpt = new long[50][2];
combi1Id =new long[50][4000];
combi1Cpt = new long[50];
num1_bonusId =new long[11][4000];
num1_bonusCpt = new long[11];
num2_bonusId =new long[11][4000];
num2_bonusCpt = new long[11];
num3_bonusId =new long[11][4000];
num3_bonusCpt = new long[11];
combi2Id=new long[50][4000];
combi2Cpt=new long[50];
bonusId =new long[11][4000];
bonusCpt=new long[11][2];
}
/**
* Sert a recuperer la taille de la table pour calculer la frequence d'apparition de la combinaison/du nombre considere
*/
//TODO: enlever l'affichage
public void setTaille(){
/*on effectue un requete "SELECT Count(*) From myny.Test_Table"
puis on l'affecte a une variable de l'objet Statistics*/
try {
conn = maDB.getConnection();
if (conn != null) {
Statement ps = conn.createStatement();
ResultSet rs=ps.executeQuery("SELECT Count(*) From myny.Test_Table");
rs.next();
long nbcolret= rs.getLong(1);
conn.commit();
System.out.println("statement cree");
taille =nbcolret;
System.out.println(taille);
}
} catch (SQLException e) {
System.out.println("chiffre1 probleme");
System.out.println(e.getMessage());
}
}
/**
* Sert a recuperer le nombre d'apparitions de chaque numero ainsi que leurs id (annee_numero_de_tirage) de la table dans la db
* <p>i, k, l (int) sont des compteurs</p>
* <p>numprec(int) verifie si on change de chiffre ou non</p>
* <p>rs (ResultSet) sert a avoir des retours sur les requetes realisees</p>
* @throws SQLException si erreur SQL
*/
//TODO: enlever l'affichage
public void afficherChiffre1() throws SQLException {
System.out.println("debut afficherChiffre1");
int k=0, numprec=0, l=0;
ResultSet rs=null;
String sql;
for (int i=1; i<6;i++) {
//pour chaque colonne contenant une boule (non bonus) de la table, on va recuperer le nombre d'apparitions de chaque boule et le stocker dans un tableau
sql = "SELECT Test_Table.boule_" + i + ",Count(*) as 'cnt' FROM myny.Test_Table GROUP BY Test_Table.boule_" + i + "; ";
try {
if(conn==null) {
conn = maDB.getConnection();
}
if (conn != null) {
Statement ps = conn.createStatement();
rs = ps.executeQuery(sql);
conn.commit();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("chiffre1 probleme");
System.out.println(e.getMessage());
}
while (rs.next()) {
if (i == 1) {
numCpt[rs.getInt(1)][0] = rs.getInt(1);
numCpt[rs.getInt(1)][1] = rs.getLong(2);
} else {
numCpt[rs.getInt(1)][1] += rs.getLong(2);
}
}
}
for (int i=1; i<=5;i++) {
//pour chaque colonne contenant une boule (non bonus) de la table, on va
// recuperer les annee_numero_de_tirage correspondants et les stocker dans un tableau
sql = "SELECT Test_Table.annee_numero_de_tirage, Test_Table.boule_" + i + " FROM myny.Test_Table ORDER BY Test_Table.boule_" + i + "; ";
try {
if(conn==null) {
conn = maDB.getConnection();
}
if (conn != null) {
Statement ps = conn.createStatement();
rs = ps.executeQuery(sql);
conn.commit();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("chiffre1 probleme");
System.out.println(e.getMessage());
}
//rs.next();
while (rs.next()) {
//System.out.println(numprec+", "+rs.getInt(2));
if(numprec!=rs.getInt(2)) {k = 0;}
while(numId[rs.getInt(2)][k]!=0){
k++;
}
numId[rs.getInt(2)][k]=rs.getInt(1);
//System.out.println(numId[rs.getInt(2)][k]);
numprec=rs.getInt(2);
}
k=0;
}
for (int i=1; i<50;i++) {
System.out.println(i+":"+numCpt[i][1]);
while(numId[i][l]!=0){
System.out.print(numId[i][l]+", ");
l++;
}
System.out.println();
l=0;
}
}
/**
* On va essayer de trouver les correspondances d'identifiants entre le chiffre entre en parametre et les chiffres dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier et les seconds chiffres potentiels
* @param chiffre1 (int) le chiffre donne;
* <p>i, j, k, l (int) sont des compteurs</p>
* @throws SQLException si erreur SQL
*/
//TODO: enlever l'affichage
public void afficherCombinaisons2(int chiffre1) throws SQLException {
afficherChiffre1();
System.out.println("debut afficherCombinaisons2");
numSelect[1]=chiffre1;
int j=0, k=0, l=0;
while (numId[chiffre1][j] != 0) {
for(int i=1;i<50;i++) {
if (i != chiffre1) {
while (numId[i][k] != 0) {
if (numId[i][k] == numId[chiffre1][j]) {
//System.out.println("[i:"+i+"][k:"+k+"][j:"+j+"]");
//System.out.println(numId[i][k] +"=="+ numId[chiffre1][j]);
//combi1Cpt[i]++;
combi1Id[i][(int)combi1Cpt[i]++]=numId[i][k];
//System.out.println("[cpt:"+cpt+"]");
}
k++;
}
k = 0;
}
}
j++;
}
for (int i=1; i<50;i++) {
/*for (int p=0; p<50;p++) {
System.out.print(combi1Id[i][p]+", ");
}*/
System.out.println(i+": "+combi1Cpt[i]);
while(combi1Id[i][l]!=0){
System.out.print(combi1Id[i][l]+", ");
l++;
}
System.out.println();
l=0;
}
}
/**
* On va essayer de trouver les correspondances d'identifiants entre les 2 chiffres entres en parametre et les chiffres dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier, le second et les troisièmes chiffres potentiels
* @param chiffre1, (int) le premier chiffre donne;
* @param chiffre2, (int) le second chiffre donne;
* <p>i, j, k (int) sont des compteurs</p>
* @throws SQLException si erreur SQL
*/
//TODO: enlever l'affichage
public void afficherCombinaisons3(int chiffre1, int chiffre2) throws SQLException {
//afficherChiffre1();
afficherCombinaisons2(chiffre1);
System.out.println("debut afficherCombinaisons3");
numSelect[2]=chiffre2;
int j=0, k=0;
while (combi1Id[chiffre2][j] != 0){
for(int i=1;i<50;i++) {
if (i != chiffre1 && i!=chiffre2) {
while (numId[i][k] != 0) {
if (numId[i][k] == combi1Id[chiffre2][j]) {
combi2Id[i][(int)combi2Cpt[i]++]=numId[i][k];
}
k++;
}
k = 0;
}
}
j++;
}
k = 0;
for (int i=1; i<50;i++) {
/*for (int p=0; p<50;p++) {
System.out.print(combi1Id[i][p]+", ");
}*/
System.out.println(i+": "+combi2Cpt[i]);
while(combi2Id[i][k]!=0){
System.out.print(combi2Id[i][k]+", ");
k++;
}
System.out.println();
k=0;
}
}
/**
* Sert a recuperer le nombre d'apparitions de chaque numero bonus ainsi que leurs id (annee_numero_de_tirage) de la table dans la db
* <p>i, k, l (int) sont des compteurs</p>
* <p>numprec(int) verifie si on change de chiffre ou non</p>
* <p>rs (ResultSet) sert a avoir des retours sur les requetes realisees</p>
* @throws SQLException si erreur SQL
*/
//TODO: enlever l'affichage
public void afficherBonus() throws SQLException {
System.out.println("debut afficherBonus");
int k=0, numprec=0, l=0;
ResultSet rs=null;
String sql;
sql = "SELECT Test_Table.numero_chance,Count(*) as 'cnt' FROM myny.Test_Table GROUP BY Test_Table.numero_chance; ";
try {
conn = maDB.getConnection();
if (conn != null) {
Statement ps = conn.createStatement();
rs = ps.executeQuery(sql);
conn.commit();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("chiffre1 probleme");
System.out.println(e.getMessage());
}
//rs.next();
while (rs.next()) {
bonusCpt[rs.getInt(1)][0] = rs.getInt(1);
bonusCpt[rs.getInt(1)][1] = rs.getLong(2);
}
/*for (int i=0; i<11;i++) {
System.out.println(i+" :"+ bonusCpt[i][1]);
}*/
sql = "SELECT Test_Table.annee_numero_de_tirage, Test_Table.numero_chance FROM myny.Test_Table ORDER BY Test_Table.numero_chance; ";
try {
conn = maDB.getConnection();
if (conn != null) {
Statement ps = conn.createStatement();
rs = ps.executeQuery(sql);
conn.commit();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("chiffre1 probleme");
System.out.println(e.getMessage());
}
//rs.next();
while (rs.next()) {
//System.out.println(numprec+", "+rs.getInt(2));
if(numprec!=rs.getInt(2)) {k = 0;}
while(bonusId[rs.getInt(2)][k]!=0){
k++;
}
bonusId[rs.getInt(2)][k]=rs.getInt(1);
//System.out.println(bonusId[rs.getInt(2)][k]);
numprec=rs.getInt(2);
}
for (int i=1; i<11;i++) {
System.out.println(i+":"+bonusCpt[i][1]);
while(bonusId[i][l]!=0){
System.out.print(bonusId[i][l]+", ");
l++;
}
System.out.println();
l=0;
}
}
/**
* On va essayer de trouver les correspondances d'identifiants entre le chiffre entre en parametre et les chiffres bonus potentiels dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier chiffre et les seconds chiffres bonus potentiels
* @param chiffre1, (int) le chiffre donne;
* <p>i, j, k, l (int) sont des compteurs</p>
* @throws SQLException si erreur SQL
*/
//TODO: enlever l'affichage
public void afficherNumBonus(int chiffre1) throws SQLException {
afficherChiffre1();
this.afficherBonus();
System.out.println("debut afficherNumBonus");
numSelect[1]=chiffre1;
int j=0, k=0, l=0, cpt=0;
for(int i=1;i<11;i++) {
while (numId[chiffre1][j] != 0) {
while (bonusId[i][k] != 0) {
//System.out.println(bonusId[i][k] +"=="+ numId[chiffre1][j]);
if (bonusId[i][k] == numId[chiffre1][j]) {
num1_bonusCpt[i]++;
num1_bonusId[i][cpt++]=bonusId[i][k];
j++;
k=0;
}
k++;
}
k = 0;
j++;
}
j = 0;
cpt=0;
}
for (int i=1; i<11;i++) {
/*for (int p=1; p<50;p++) {
System.out.print(combi1Id[i][p]+", ");
}*/
System.out.println(i+": "+num1_bonusCpt[i]);
while(num1_bonusId[i][l]!=0){
System.out.print(num1_bonusId[i][l]+", ");
l++;
}
System.out.println();
l=0;
}
}
/**
* On va essayer de trouver les correspondances d'identifiants entre les 2 chiffres entres en parametre et les chiffres bonus potentiels dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier chifre, le second chiffre et les chiffres bonus potentiels
* @param chiffre1, (int) le premier chiffre donne;
* @param chiffre2, (int) le second chiffre donne;
* <p>i, j, k, l, cpt (int) sont des compteurs</p>
* @throws SQLException si erreur SQL
*/
//TODO: enlever l'affichage
public void afficherNumBonusCombi2(int chiffre1, int chiffre2) throws SQLException {
afficherCombinaisons2(chiffre1);
afficherBonus();
System.out.println("debut afficherNumBonusCombi2");
numSelect[1]=chiffre1;
numSelect[2]=chiffre2;
int j=0, k=0, l=0, cpt=0;
for(int i=1;i<11;i++) {
while (combi1Id[chiffre2][j] != 0) {
while (bonusId[i][k] != 0) {
//System.out.println(bonusId[i][k] +"=="+ combi1Id[chiffre2][j]);
if (bonusId[i][k] == combi1Id[chiffre2][j]) {
num2_bonusCpt[i]++;
num2_bonusId[i][cpt++]=bonusId[i][k];
j++;
k=0;
}
k++;
}
k = 0;
j++;
}
j = 0;
cpt=0;
}
for (int i=0; i<11;i++) {
/*for (int p=1; p<50;p++) {
System.out.print(combi1Id[i][p]+", ");
}*/
System.out.println(i+": "+num2_bonusCpt[i]);
while(num2_bonusId[i][l]!=0){
System.out.print(num2_bonusId[i][l]+", ");
l++;
}
System.out.println();
l=0;
}
}
/**
* On va essayer de trouver les correspondances d'identifiants entre les 3 chiffres entres en parametre et les chiffres bonus potentiels dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier chifre, le second chiffre, le troisieme chiffre et les chiffres bonus potentiels
* @param chiffre1, (int) le premier chiffre donne;
* @param chiffre2, (int) le second chiffre donne;
* @param chiffre3, (int) le troisieme chiffre donne;
* <p>i, j, k, l (int) sont des compteurs</p>
* @throws SQLException si erreur SQL
*/
//TODO: enlever l'affichage
public void afficherNumBonusCombi3(int chiffre1, int chiffre2, int chiffre3) throws SQLException {
afficherCombinaisons3(chiffre1, chiffre2);
afficherBonus();
System.out.println("debut afficherNumBonusCombi3");
numSelect[1]=chiffre1;
numSelect[2]=chiffre2;
numSelect[3]=chiffre3;
int j=0, k=0, l=0;
while (combi2Id[chiffre3][j] != 0) {
for(int i=1;i<11;i++) {
while (bonusId[i][k] != 0) {
//System.out.println(combi2Id[chiffre3][j] +"=="+ bonusId[i][k]);
if (bonusId[i][k] == combi2Id[chiffre3][j]) {
//num3_bonusCpt[i]++;
//num3_bonusId[i][cpt++]=bonusId[i][k];
num3_bonusId[i][(int) num3_bonusCpt[i]++]=bonusId[i][k];
j++;
k=0;
}
k++;
}
k = 0;
}
j++;
}
for (int i=1; i<11;i++) {
/*for (int p=0; p<50;p++) {
System.out.print(num3_bonusId[i][p]+", ");
}*/
System.out.println(i+": "+num3_bonusCpt[i]);
while(num3_bonusId[i][l]!=0){
System.out.print(num3_bonusId[i][l]+", ");
l++;
}
System.out.println();
l=0;
}
}
}

View file

@ -0,0 +1,100 @@
package fr.myny.database;
import org.junit.jupiter.api.Test;
import java.sql.*;
import java.io.*;
import static org.junit.jupiter.api.Assertions.*;
class DataBaseTest {
Connection maCo;
public static final String FILEPATH="c:/Users/cocof/Bureau/nouveau_loto.csv";
@Test
void fillDataBase() throws SQLException {
DataBase maDB=new DataBase();
maCo=maDB.getConnection();
assertNotNull(maCo);
int res= maDB.fillTable(FILEPATH);
System.out.println(res);
Statement stmt= maDB.conn.createStatement();
ResultSet rs=stmt.executeQuery("SELECT Count(*) From myny.Test_Table");
rs.next();
long nbcolret= rs.getLong(1);
//System.out.println("nb lignes (changer la ligne juste en dessous si on modifie le nb de lignes): "+rs.getInt("total"));
System.out.println("nb lignes (changer la ligne juste en dessous si on modifie le nb de lignes): "+rs.getLong(1));
assertEquals(1321,rs.getLong(1));
}
@Test
void importDataBase() {
}
@Test
void createTable() throws SQLException {
DataBase maDB=new DataBase();
maDB.createTable();
Statement stmt= maDB.conn.createStatement();
ResultSet rs=stmt.executeQuery("Select * From myny.Test_Table");
ResultSetMetaData rsmd =rs.getMetaData();
int nbCol=rsmd.getColumnCount();
System.out.println("nb Col (changer la ligne juste en dessous si on modifie le nb de col): "+rsmd.getColumnCount());
assertEquals(nbCol,25);
}
@Test
void updateTable() {
DataBase maDB=new DataBase();
maCo=maDB.getConnection();
int res = maDB.updateTable(FILEPATH);
System.out.println(res);
assertNotNull(maCo);
}
@Test
void updateTablev2() {
DataBase maDB=new DataBase();
maCo=maDB.getConnection();
int res = maDB.updateTablev2(FILEPATH);
System.out.println(res);
assertNotNull(maCo);
}
@Test
void getConnection() {
DataBase maDB=new DataBase();
maCo=maDB.getConnection();
assertNotNull(maCo);
}
@Test
public void showLine() throws SQLException {
DataBase maDB=new DataBase();
ResultSet rs=maDB.showLine(2017001);
rs.next();
for (int i=1;i<26;i++) {
System.out.print(rs.getObject(i)+", ");
}
}
@Test
public void removeMultiplesLines(){
DataBase maDB=new DataBase();
int res= maDB.removeMultiplesLines(2017004);
System.out.print(res);
}
@Test
public void removeLine(){
DataBase maDB=new DataBase();
int res= maDB.removeLine(2017014);
System.out.print(res);
}
@Test
public void dropTable(){
DataBase maDB=new DataBase();
maDB.dropTable();
}
}

View file

@ -0,0 +1,62 @@
package fr.myny.stats;
import org.junit.jupiter.api.Test;
import java.sql.SQLException;
public class StatisticsTest {
//c.setTaille();
//c.afficherChiffre1();
//c.afficherNumBonus();
//c.afficherCombinaisons2(4);
//c.afficherCombinaisons3(32,16);
//c.afficherNumBonus(1);
//c.afficherNumBonusCombi2(5,10);
//c.afficherNumBonusCombi3(28,14,37);
@Test
public void setTaille(){
Statistics s =new Statistics();
s.setTaille();
}
@Test
public void afficherChiffre1() throws SQLException{
Statistics s =new Statistics();
s.afficherChiffre1();
}
@Test
public void afficherCombinaisons2() throws SQLException{
Statistics s =new Statistics();
s.afficherCombinaisons2(4);
}
@Test
public void afficherCombinaisons3() throws SQLException{
Statistics s =new Statistics();
s.afficherCombinaisons3(32,16);
}
@Test
public void afficherBonus() throws SQLException{
Statistics s =new Statistics();
s.afficherBonus();
}
@Test
public void afficherNumBonus() throws SQLException{
Statistics s =new Statistics();
s.afficherNumBonus(1);
}
@Test
public void afficherNumBonusCombi2() throws SQLException{
Statistics s =new Statistics();
s.afficherNumBonusCombi2(5,10);
}
@Test
public void afficherNumBonusCombi3() throws SQLException{
Statistics s =new Statistics();
s.afficherNumBonusCombi3(28,14,37);
}
}