Data truncated for column 'idadresse' at row 1
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 :
Code:
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();
}
} |
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:
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();
}
} |
me sort cette erreur
Code:
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) |
Je ne comprend absolument pas le pourquoi du comment :S