Nico creation methodes vides #7

Merged
NyxiumYuuki merged 33 commits from Nico_Creation_Methodes_vides into main 2021-02-01 18:45:25 +01:00
3 changed files with 180 additions and 234 deletions
Showing only changes of commit 47c6215386 - Show all commits

6
.idea/dbnavigator.xml generated
View file

@ -23,7 +23,11 @@
<autoscroll-to-editor value="false" />
<autoscroll-from-editor value="true" />
<show-object-properties value="true" />
<loaded-nodes />
<loaded-nodes>
<connection connection-id="2cc612ec-5019-46bc-b400-7f0d1d32a97d">
<schema name="myny" object-types="function, procedure, view, table" />
</connection>
</loaded-nodes>
</component>
<component name="DBNavigator.Project.DatabaseConsoleManager">
<connection id="2cc612ec-5019-46bc-b400-7f0d1d32a97d">

View file

@ -22,162 +22,7 @@ public class DataBase {
}
/**
* La methode de remplissage de la base de donnees
*/
public void fillDataBase(){
/*String sql="INSERT INTO 'myny.Test_Table'" +
" ('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";*/
String sql="INSERT INTO myny.Test_Table" +
" (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 {
Scanner sc = new Scanner(new File(filePath));
sc.useDelimiter(";|\\n"); //sets the delimiter pattern
int i=0,j;
long val;
String line=sc.nextLine();
line="";
String date, jour, mois, an;
while (sc.hasNext()){
j=(i% NBCOL)+1;
if(j==1) {
line=line+'(';
val=Long.parseLong(sc.next().replace(",","."));
line=line+val;
line=line+';';
}
if(j< NBCOL && j>1) {
if (j==2 ||j==11){
line=line+"\'"+sc.next().replace(",",".")+"\',";
}
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);
line=line+"\'"+an+"-"+mois+"-"+jour+"\',";
}
else{
line=line+sc.next().replace(",",".");
line=line+';';
}
}
if(j== NBCOL) {
line=line+"\'"+sc.next().replace(",",".")+"\'";
line=line+')';
line=line.replaceAll("\\s","");
line = line.replaceAll(";", ",");
if(sc.hasNext()) {
line = line+ ",";
}
else{
line = line+ ";";
}
//System.out.println(line);
sql=sql+line;
line="";
}
i++;
//System.out.println(sc.nextLine());
//System.out.print(sc.next()); //find and returns the next complete token from this scanner
}
System.out.println(sql);
//System.out.println(sql);
/*CSVReader reader = new CSVReader(new FileReader(filePath));
String[] nextLine=reader.readNext();
while ((nextLine = reader.readNext()) != null) {
// nextLine[] is an array of values from the line
for (int j = 0; j < nextLine.length - 1; j++) {
if (j==0){
sql=sql+"(";
}
sql=sql+nextLine[j];
if (j==nextLine.length-1){
sql=sql+"),";
}
else{
sql=sql+",";
}
//System.out.println(nextLine[j]);
}
sql=sql+";";
}
System.out.println(sql);
conn = DriverManager.getConnection(url);
if(conn!=null) {
Statement stmt = conn.createStatement();
stmt.executeQuery(sql);
conn.commit();
System.out.println("statement cree");
}*/
}
catch (Exception e){
System.out.println(e.getMessage());
}
try {
conn = this.getConnection();
if(conn!=null) {
Statement stmt = conn.createStatement();
stmt.executeQuery(sql);
conn.commit();
//conn.close();
System.out.println("statement cree");
}
} catch (SQLException e) {
System.out.println("oskour");
System.out.println(e.getMessage());
}
}
/**
* La methode dimport de donnees depuis la base de donnees
@ -309,6 +154,133 @@ public class DataBase {
}
/**
* La methode de remplissage de la base de donnees
*/
public void fillDataBase(){
int i=0,j, nbValAj=0;
long val;
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" +
" (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 {
Scanner sc = new Scanner(new File(filePath));
sc.useDelimiter(";|\\n"); //sets the delimiter pattern
line=sc.nextLine();
line="";
while (sc.hasNext()){
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 = null;
try {
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]+"");
}
}
}
ps.executeQuery();//puis on execute la requete
System.out.println("update validee");
}
} catch (SQLException e) {
System.out.println("oskour into update");
System.out.println(e.getMessage());
}
}
}
/**
* La methode de mise a jour de la base de donnees
* @return sql String, contenant la requete SQL
@ -434,12 +406,39 @@ public class DataBase {
return sql;
}
/**
* La methode de mise a jour de la base de donnees 2 qui evite les injections sql
* @return sql String, contenant la requete SQL
* @var mesL tableau dans lequel seront stockés tous les long
* @var mesS tableau dans lequel seront stockés tous les String
* @var mesD tableau dans lequel seront stockés tous les Double
* @var sc Scanner, l objet qui servira a lire le fichier csv
* @var line String, ligne contenant l'ajout a effectuer
* @var i int, un compteur de valeurs lues,
* @var j int, qui suit i%NBCOL
* @var a int, un compteur de lignes modifiees
* @var b int, un compteur de champs modifiees
* @var nbValAj int qui augmente si on doit ajouter des lignes
* @var date String, la valeur de la date lue
* @var jour String, le jour lu
* @var mois String, le mois lu
* @var an String, l annee lue
* @var anEntre long, valeur lue pour l annee et le numero de tirage. sert a definir si la valeur est a ajouter dans la table
* @var ps PreparedStatement pour executer la requete sans injection sql
* @var stmt Statement pour executer la requete de depart
*/
public String updateDataBasev2() throws FileNotFoundException {
//Ligne maL=new Ligne();
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;
ResultSet rs;
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, "+
@ -469,36 +468,27 @@ public class DataBase {
try {
conn = this.getConnection(); //initialisation de la connexion
if(conn!=null) { //si la co est bonne
Scanner sc = new Scanner(new File(filePath)); //lire le fichier donne
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
long cpt=0;
//Object[] champs;
int i=0,j=0, nbValAj=0;
String date, jour, mois, an;
String line="";
long 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);
Statement stmt = conn.createStatement(); //recuperation du nb de lignes dans la table
ResultSet rs = stmt.executeQuery("SELECT MAX(annee_numero_de_tirage) FROM myny.Test_Table;");
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);
//System.out.println("numero max de la db :"+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) {
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;
//champs[cpt++]=anEntre;
//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
line = line + "?,";
@ -531,53 +521,23 @@ public class DataBase {
sql = sql + line + "\n";//on ajoute la ligne a la requete
line = "";
}
/*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) {
if (nbValAj>0) {//si on a des modifications
PreparedStatement ps = null;
try {
conn = this.getConnection();
if (conn != null) {
ps=conn.prepareStatement(sql);
for(int a=1;a<=nbValAj;a++){
for(int b=1;b<=NBCOL;b++){
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(j > 12 && j < 24 && j % 2 == 1){
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]+"");
}
@ -587,32 +547,14 @@ public class DataBase {
}
}
}
//conn.close();
ps.executeQuery();
ps.executeQuery();//puis on execute la requete
System.out.println("update validee");
}
} catch (SQLException e) {
System.out.println("oskour into update");
System.out.println(e.getMessage());
}
}
/*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();
stmt.executeQuery(sql);
conn.commit();
//conn.close();
System.out.println("update validee");
}
} catch (SQLException e) {
System.out.println("oskour into update");
System.out.println(e.getMessage());
}
}*/
}
} catch (SQLException e) {
System.out.println("oskour update");
@ -621,8 +563,8 @@ public class DataBase {
return sql;
}
public void removeLines() throws FileNotFoundException{
String sql="delete from myny.Test_Table where annee_numero_de_tirage >2017027";
public void removeLines(int i) throws FileNotFoundException{
String sql="delete from myny.Test_Table where annee_numero_de_tirage >"+i;
try {
conn = this.getConnection();
if(conn!=null) {

View file

@ -16,14 +16,14 @@ class DataBaseTest {
DataBase maDB=new DataBase();
Connection maCo=maDB.getConnection();
assertNotNull(maCo);
//maDB.fillDataBase();
maDB.fillDataBase();
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(1317,rs.getLong(1));
assertEquals(1321,rs.getLong(1));
}
@Test
@ -72,7 +72,7 @@ class DataBaseTest {
@Test
public void removeLines() throws FileNotFoundException{
DataBase maDB=new DataBase();
maDB.removeLines();
maDB.removeLines(0);
}
@Test