Bonjour à tous,
Alors j'ai un petit problème que je ne comprends pas... je m'explique:
Dans mon appli, une partie est dédiée à la récupération de données contenues dans des fichiers textes, puis à leur insertion dans la base de données.
Alors en gros voilà comment ça marche:
OpenFiledialog / sélection de 1 ou plusieurs fichiers texte / OK / et op' ça lis le 1er fichier, récupère des données spécifiques (StreamReader) stockées dans des variables / les variables sont insérées dans la requête SQL pour aller dans la BDD.
Maintenant, dans une autre partie de mon appli, je refait la même chose mise à part que TOUT est automatique: on clique sur un bouton, ça utilise des paramètres pop de connection à un serveur mail, je récupère les pièces jointes des mails spécifiques (intitulé clé), qui vont direct se placer dans un répertoire défini dans les paramètres, et avant de passer au 2nd mail avec l'intitulé clé, je pratique mes fonctions cités au début pour insérer les données dans la BDD.
Donc le seul changement en interne de ces fonctions, c'est que au lieu de choisir les fichiers avec OpenfileDialog, le chemin des fichiers est spécifié.
Le problème: je n'y arrive pas
J'ai beau juste définir le chemin complet du fichier, ça ne marche pas!
Alors voilà mon code, et si quelqu'un a une idée de ce qui cloche...
...Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 string path = ""; string var1, var2, var3, var4, var5; private MySqlConnection Connection = new MySqlConnection(); private MySqlDataAdapter MyAdapter = new MySqlDataAdapter(); private void LecturePJ() { path = "C:\\Documents and Settings\\***\\Mes documents\\TempFiles\\Nouveaux.txt"; //donne le chemin et le nom du fichier au constructeur StreamReader FileStream fs = new FileStream(path, FileMode.Open); StreamReader sr = new StreamReader(fs, Encoding.UTF8); string ligne; //lit la première ligne du texte ligne = sr.ReadLine(); if (ligne == "***") { //continue de lire jusqu'à la fin du fichier while (ligne != null) { var1 = ""; var2 = ""; var3 = ""; var4 = ""; var5 = ""; //on passe à la ligne suivante ligne = sr.ReadLine(); if (ligne == "***") { // Boucle de récupération par redondance des intervals de lignes for (int compteur = 0; compteur < 52; ligne = sr.ReadLine(), compteur++) switch (compteur) { case 1: var1 = ligne; break; case 2: var2 = ligne; break; case 3: var5 = ligne; break; case 13: var3 = ligne; double.Parse(var3); break; case 51: var4 = ligne; break; } // Appel de la méthode Populate PopulateDataGridView2(); } } } else { Console.WriteLine("Le fichier suivant est invalide!\n" + path + "\n"); } //ferme le fichier sr.Close(); fs.Close(); } private void PopulateDataGridView2() { // mise en tableau des 3 données string[] row0 = { var1, var2, var3, var4, var5 }; //Paramètres de connexion Connect(); //Définition des SQLParameters MySqlParameter param*** = new MySqlParameter("@***", MySqlDbType.String, 50); //On associe à la variable récupérée précédemment param***.Value = row0[0]; MySqlParameter param*** = new MySqlParameter("@***", MySqlDbType.String, 100); param***.Value = row0[1]; MySqlParameter param***= new MySqlParameter("@***", MySqlDbType.Double); param***.Value = row0[2]; DateTime madate = DateTime.ParseExact(row0[3], "ddMMyy", null); MySqlParameter param*** = new MySqlParameter("@***", MySqlDbType.Date); param***.Value = madate; MySqlParameter param*** = new MySqlParameter("@***", MySqlDbType.String, 40); param***.Value = row0[4]; //On définit la requête SQL ...***... MySqlCommand cmd = new MySqlCommand(sql1.ToString(), Connection); //On ajoute les paramètres définis à la commande SQL cmd.Parameters.Add(param***); cmd.Parameters.Add(param***); ...***... MySqlCommand cmd2 = new MySqlCommand(sql2.ToString(), Connection); cmd2.Parameters.Add(param***); cmd2.Parameters.Add(param***); cmd2.Parameters.Add(param***); ...***... MySqlCommand cmd3 = new MySqlCommand(sql3.ToString(), Connection); //On ajoute les paramètres définis à la commande SQL cmd3.Parameters.Add(param***); cmd3.Parameters.Add(param***); try { Connection.Open(); //Exécution requête cmd.ExecuteNonQuery(); cmd3.ExecuteNonQuery(); //ExecuteSqlNQ(cmd); Connection.Close(); } catch { // Si la connexion a échoué, message d'erreur Connection.Close(); } try { Connection.Open(); //Exécution requête cmd2.ExecuteNonQuery(); //ExecuteSqlNQ(cmd2); Connection.Close(); } catch { Console.WriteLine("Echec d'insertion de " + var2 + "\n" + "(Une duplication de produit est impossible!)\n"); Connection.Close(); } }
Partager