Bonjour à tous
J'ai créé un programme en java qui permet de gérer une base de données SQL pour mon université.
Je rencontre un problème avec une méthodes voici la 1er méthodes qui permet d'ajouter un etudiants et son adresse dans les table respectif :
Et la aucun problème cela marche niquel par contre pour la 2eme méthodes qui est presque (seulement le nom des variable et table change) la meme qui permet d'ajouter un enseignant a la base de donnée :
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 public static void CreationEtudiant (Statement stmt){ try{ // Dec des variable String numeroEtudiant,nom,prenom,numVoie,voie,ville,requete,idville,requete2; int codePostal, update; ResultSet rs; System.out.println("Tapez le numeroEtudiant de l'etudiant:"); numeroEtudiant=Clavier.readString(); System.out.println("Tapez le nom de l'etudiant :"); nom=Clavier.readString(); System.out.println("Tapez le prenom de l'etudiant:"); prenom=Clavier.readString(); System.out.println("Tapez l'adresse de l'étudiant :"); voie=Clavier.readString(); System.out.println("Tapez le numero de la voie de l'adresse :"); numVoie=Clavier.readString(); System.out.println("Tapez la ville de l'etudiant :"); ville=Clavier.readString(); System.out.println("Tapez le code postal de l'etudiant :"); codePostal=Clavier.readInt(); //Verification de l'existence de la ville dans la base de donnée requete = "SELECT idville FROM ville WHERE ville='"+ville+"';"; rs = stmt.executeQuery(requete); if (rs.next()){ idville = rs.getString ("idville"); } else { idville = ""; } if ( idville == "" ) { // La ville n'existe pas // Insertion de la ville dans la table Ville requete = "INSERT INTO ville VALUES (NULL,'"+ville+"','"+codePostal+"');"; update = stmt.executeUpdate(requete); System.out.println("update="+update); // Insertion de la ville dans la table Adresse requete = "INSERT INTO adresse VALUES (NULL,'"+voie+"','"+numVoie+"',(SELECT idville FROM ville WHERE ville='"+ville+"'));"; update = stmt.executeUpdate(requete); System.out.println("update="+update); } else { // La ville Existe // Ajout d'une adresse dans la Table adresse avec l'idville existant requete = "INSERT INTO adresse VALUES (NULL,'"+voie+"','"+numVoie+"',(SELECT idville FROM ville WHERE ville='"+ville+"'));"; update = stmt.executeUpdate(requete); System.out.println("update="+update); } //Requete d'insertion dans la table Etudiants requete2="INSERT INTO etudiants VALUES ('"+numeroEtudiant+"','"+nom+"','"+prenom+"',(SELECT idadresse FROM adresse WHERE voie = '"+voie+"' AND numVoie = '"+numVoie+"'));"; update = stmt.executeUpdate(requete2); System.out.println("update="+update); }catch (Exception e){ e.printStackTrace(); } }
me sort cette erreur
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 public static void CreationEnseignant(Statement stmt){ try{ // Dec des varaible String numeroEnseignant,nom,prenom,numVoie,voie,ville,requete,idville; int codePostal,update; ResultSet rs; System.out.println("Tapez le numeroEnseignant de l'enseignant:"); numeroEnseignant=Clavier.readString(); System.out.println("Tapez le nom de l'enseignant :"); nom=Clavier.readString(); System.out.println("Tapez le prenom de l'enseignant :"); prenom=Clavier.readString(); System.out.println("Tapez l'adresse de l'enseignant :"); voie=Clavier.readString(); System.out.println("Tapez le numero de la voie de l'adresse :"); numVoie=Clavier.readString(); System.out.println("Tapez la ville de l'enseignant :"); ville=Clavier.readString(); System.out.println("Tapez le code postal de l'enseignant :"); codePostal=Clavier.readInt(); //Verification de l'existence de la ville dans la base de donnée requete = "SELECT idville FROM ville WHERE ville='"+ville+"';"; rs = stmt.executeQuery(requete); if (rs.next()){ idville = rs.getString ("idville"); } else { idville = ""; } if ( idville == "" ) { // La ville n'existe pas // Insertion de la ville dans la table Ville requete = "INSERT INTO ville VALUES (NULL ,'"+ville+"','"+codePostal+"');"; update = stmt.executeUpdate(requete); System.out.println("update="+update); // Insertion de la ville dans la table Adresse requete = "INSERT INTO adresse VALUES (NULL ,'"+voie+"','"+numVoie+"',(SELECT idville FROM ville WHERE ville='"+ville+"'));"; update = stmt.executeUpdate(requete); System.out.println("update="+update); } else { // La ville Existe // Ajout d'une adresse dans la Table adresse avec l'idville existant requete = "INSERT INTO adresse VALUES (NULL,'"+voie+"','"+numVoie+"',(SELECT idville FROM ville WHERE ville='"+ville+"'));"; update = stmt.executeUpdate(requete); System.out.println("update="+update); } //Requete d'insertion dans la table Enseignants requete="INSERT INTO enseignants VALUES ('"+numeroEnseignant+"','"+nom+"','"+prenom+"',(SELECT idadresse FROM adresse WHERE voie = '"+voie+"' AND numVoie = '"+numVoie+"'));"; update = stmt.executeUpdate(requete); System.out.println("update="+update); } catch (Exception e){ e.printStackTrace(); } }
Je ne comprend absolument pas le pourquoi du comment :S
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 java.sql.SQLException: Data truncated for column 'idadresse' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665) at com.mysql.jdbc.Connection.execSQL(Connection.java:3170) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1316) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1235) at GestionSQL.CreationEnseignant(GestionSQL.java:243) at GestionSQL.main(GestionSQL.java:307)
Partager