com.mysql.jdbc.des exceptions.jdbc4.MySQLIntegrityConstraintViolationexception: la Colonne "hourId' ne peut pas être null
Mon projet est la faculté de répartition. lorsque j'essaie d'insérer des données, il montre l'exception suivante.
"com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Column 'hourId' cannot be null"
Quelqu'un peut m'aider comment faire pour surmonter ce problème?
Veuillez fournir un exemple de code pour éviter cette exception.
Mon codage est
<%
Connection con = null;
String StaffName = request.getParameter("StaffName");
//String subcode = request.getParameter("subcode");
String hourId = request.getParameter("hourId");
String daysId = request.getParameter("daysId");
String date = request.getParameter("date");
//String queryText = "insert into tblstaffallocation (StaffName, subcode,hourId, daysId, date) values('"+StaffName+"','"+subcode+"','+hourId+','+daysId+','+date+')";
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/StaffAllocation","root","success");
//PreparedStatement stat = con.PrepareStatement();
String updateString ="INSERT INTO tblstaffallocation (StaffName,hourId,daysId,date) VALUES (?,?,?,?)";
PreparedStatement preparedStatement = con.prepareStatement(updateString);
preparedStatement.setString(1, StaffName);
preparedStatement.setString(2, hourId);
preparedStatement.setString(3, daysId);
preparedStatement.setString(4, date);
preparedStatement.executeUpdate();
//int rst = stat.executeUpdate("insert into tblstaffallocation ('StaffName','hourId', 'daysId', 'date') values('"+StaffName+"','"+hourId+"','"+daysId+"','"+date+"')");
%>
<table cellpadding="4" border="1" cellspacing="4" align="center">
<th>StaffName</th><th>hourId</th><th>daysId</th><th>date</th>
<%
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from tblstaffallocation");
while(rs.next()){
rs.getString(1);
rs.getString(2);
rs.getString(3);
rs.getString(4);
}
} catch (Exception e) {
out.print(e);
}
- changement column_name à nullable
- ou de donner le nom
- j'ai essayé aussi, lorsque j'insère les données dans la table, le codage des œuvres. mais quand je fais select * from tblstaffallocation. toutes les valeurs entrées autres que staffname sont stockés en tant que valeur null.
- hourid colonne n'est pas accpet null.Assurez-vous que la demande.getParameter("hourId"); ne retourne pas null
- je n'obtiens pas vous, quel nom dois-je fournir? veuillez être plus précis
- désolé, je voulais dire hourId 🙂
- S'il vous plaît, pouvez-vous fournir votre table créer de compte? Je suppose que vous êtes en train de faire un
setString
dans la preparedStatement pour ne pas les colonnes varchar certaines données qui ne peuvent pas être convertis - staffname varchar(30); hourId int(11) not null; daysId int(11) not null; date datetime not null;
- Ok, staffname est de type varchar et fonctionne bien, ce qui sur les autres colonnes? Également essayer d'imprimer votre
hourId
,daysId
,date
paramètres de vérifier le contenu (le débogage ou d'impression) et assurez-vous qu'ils ne sont pas null - j'ai essayé les deux cas. j'ai eu cette exception "de java.sql.SQLException: pas une valeur entière: "pour la colonne 'hourId' à la ligne 1" quand j'ai modifié les colonnes en nullable 🙁
- Si vous avez essayé le code dans la réponse ci-dessous cette erreur signifie que
request.getParameter("hourId")
retourne null et hourId est réglé sur "". Vérifiez vos paramètres GET, quelque chose ne va pas.
Vous devez vous connecter pour publier un commentaire.
Le message d'erreur indique que
hourId
a unNULL
valeur, de sorte que vous devez éviter. Par exemple, vous pourriez utiliser:Tant que la colonne accepte une chaîne vide. Si non, vous devez modifier la définition de la table à autoriser les valeurs null:
int
donc elle attend un entier comme entrée. Si vous donnez à "" en tant que paramètre, il renvoie une Exception SQL.hourId
? Si oui, essayez de donnée SQL. Si non, vous devez décider ce que vous voulez dans votre champs de la table lorsque la demande paramètre est null. Il va dépendre de votre programme... on ne peut pas décider. Il est courant de placer un0
pour représenter un "non-valeur", mais il dépendra de l'utilisation que vous en faites.C'est une bonne pratique d'avoir la clé primaire par table et de propriété de la clé de la clé primaire ne permet pas les valeurs null...
ORM/Hibernate suit strictement ce principe où chaque entité persistante bean devrait avoir la clé primaire.. Réponse à votre question est que vous essayez d'insérer la valeur null à une primaire\non nullable colonne .... de sorte que vous obtenez l'exception... de code ci-Dessous n'est pas une bonne pratique. Si vous avez intentionnellement mis à votre colonne nullable alors évidemment, inutile de tenter d'insérer la valeur null/valeur vide.. c'est mieux pour la conception de votre modèle de données avant de lancer la mise en œuvre de l'application.
Espère que ce sera utile...
Cheers!
colonne hourId est non null lors de la création de la table et que vous essayez de mettre à jour avec la valeur null.
vous pouvez modifier la table d'accepter hourId comme null ou la valeur par défaut de la valeur pour hourId
Laissez-nous vérifier scénario de mise en veille prolongée.
Solution :