Bonjour,
J'essaie de passer des variables d'un fichier jar à un autre pour utiliser ces variables dans des requêtes SQL.
Le problème que je rencontre est que ces variables sont des strings contenant des virgules, des espaces, des apostrophes ou des arobases. Or ces caractères posent des problèmes lors de la déclaration de la requête. Pour l'instant, j'ai réussi à résoudre le problème des apostrophes en doublant ces dernières mais je ne trouve pas de solution pour les autres caractères. Pensez-vous qu'il soit possible de remplacer ces caractères par leur code ascii ? un truc du genre "9" + chr(int) + "impasse truc" pour "9, impasse truc"... bien sur j'ai essayé mais cela ne fonctionne pas mais je me suis peut-être trompé dans la syntaxe (je ne trouve pas dans le guide, tutos ou bible sql ...)
Voici le code avec lequel j'apelle le fichier jar :
Et voici le code contenant les requetes et les paramaètres strings :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (commande.equals("Enregistrer")) { RecBdd recBdd = new RecBdd("Mickey", "Minnie", "9, impasse truc", "Hollywood", "mickey@gmail.com", "06xxxxxxxx", "06xxxxxxxx"); System.out.println("RecBdd effectuée ...."); }
Dans ce code, on peut voir que la fonction accepte plusieurs paramètres strings comme DBnom, DBprenom etc ... et la table "client" crée en SQL contient des champs "nom", "prenom" ..etc
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 public RecBdd(String RBnom, String RBprenom, String RBadresse, String RBville, String RBmail, String RBtel1, String RBtel2) { // Variables relatives à la connexion à la base de données String url = "jdbc:mysql://localhost:3306/bdd_cuisine"; String utilisateur = "Cuisine_VN"; String motDePasse = "aileOuCuisse"; Connection connexion = null; //Statement statement = null; ResultSet resultat = null; //chargement du pilote try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("chargement pilote"); } catch (ClassNotFoundException e) { System.out.println("erreur ClassNotFoundException e dans RecBdd"); } //Connection à la base de données try { System.out.println("connexion BDD"); connexion = DriverManager.getConnection( url, utilisateur, motDePasse ); //test des variables System.out.println(RBadresse); } catch (SQLException e) { System.out.println("SQLException erreur connexion BDD"); } //commandes SQL try { //création de l'objet gérant les requêtes Statement statement = connexion.createStatement(); // Exécution d'une requête d'écriture int statut = statement.executeUpdate("INSERT INTO client(nom, prenom, adresse, ville, mail, tel1, tel2, date_inscription) VALUES (" + RBnom + ", " + RBprenom + ", " + RBadresse + ", " + RBville + ", " + RBmail + ", " + RBtel1 + ", " + RBtel2 + ", NOW())"); System.out.println("enregistrement effectué ???? statut : " + statut); } catch (SQLException e) { System.out.println("SQLException requête dans RecBdd"); e.printStackTrace(); } finally { if ( connexion != null ) try { // Fermeture de la connexion System.out.println("fermeture connexion dans RecBdd !?!"); connexion.close(); } catch ( SQLException ignore ) { // Si une erreur survient lors de la fermeture, il suffit de l'ignorer. } } }
Et voici les erreurs renvoyées par printStackTrace() :
Et on remarque à la ligne 3 que les variables (du moins celle contenant l'adresse) sont bien passées d'un jar à l'autre (grâce à public je présume).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 chargement pilote connexion BDD 9, impasse truc SQLException requête dans RecBdd com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'truc, Hollywood, mickey@gmail.com, 06xxxxxxxx, 06xxxxxxxx, NOW())' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) fermeture connexion dans RecBdd !?! RecBdd effectuée ....
Partager