com.mysql.jdbc.Ausnahmen.jdbc4.MySQLIntegrityConstraintViolationexception: Spalte 'hourId' kann nicht null sein
Mein Projekt ist die Fakultät Zuordnung. wenn ich versuche, Daten einzufügen, zeigt es die folgende Ausnahme.
"com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Column 'hourId' cannot be null"
Kann mir jemand helfen wie dieses problem zu überwinden?
Bitte geben Sie Beispiel-code, um diese Ausnahme.
Meine Codierung ist
<%
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);
}
- ändern column_name auf null-Werte zulässt
- oder geben Sie den Namen
- ich habe versucht, dass, wenn ich Daten in die Tabelle eingefügt, die Codierung funktioniert. aber wenn ich select * from tblstaffallocation. alle eingegebenen Werte andere als staffname sind, werden als null-Wert.
- hourid Spalte nicht accpet null.Stellen Sie sicher, dass Anfrage.getParameter("hourId"); nicht null zurückgeben
- ich dont bekommen Sie, welchen Namen soll ich angeben? bitte etwas konkreter
- sorry, ich meinte hourId 🙂
- Bitte, können Sie Ihre Tabelle create-Anweisung? Ich denke, du machst einen
setString
in das preparedStatement nicht für varchar-Spalten, einige Daten, die nicht konvertiert werden - staffname varchar(30); hourId int(11) not null; daysId int(11) not null, Datum datetime not null;
- Ok, staffname ist vom Datentyp varchar und funktioniert gut, was ist mit den anderen Spalten? Auch versuchen, zu drucken, Ihre
hourId
,daysId
,date
Parameter den Inhalt überprüfen (Debuggen oder Druck) und sicher sein, Sie sind nicht null - ich habe versucht, sowohl die Fälle. ich habe diese Ausnahme "java.sql.SQLException: Incorrect integer value: "for column 'hourId' in Zeile 1" wenn ich die geänderten Spalten in null-Werte zulässt 🙁
- Wenn Sie versucht, den code in der Antwort unten, die Fehlermeldung bedeutet, dass
request.getParameter("hourId")
gibt null zurück, und hourId festgelegt ist "". Überprüfen Sie Ihre GET-Parameter etwas falsch ist es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler sagt, dass
hourId
hat eineNULL
Wert, so dass Sie es vermeiden sollen. Zum Beispiel könnten Sie verwenden:Solange die Spalte nimmt eine leere Zeichenfolge. Wenn nicht, müssen Sie ändern Sie die definition der Tabelle auf null-Werte zulassen:
int
so dass es erwartet eine ganze Zahl als Eingabe. Wenn Sie "" als parameter wird eine SQL-Ausnahme.hourId
? Wenn ja, versuchen Sie das gegebene SQL. Wenn nicht, müssen Sie entscheiden, was Sie tun möchten, in der Tabelle Feld, wenn der request-parameter ist null. Es hängt von Ihrem Programm... können wir nicht entscheiden. Es ist üblich, das setzen einer0
zur Darstellung einer "nicht-Wert" - Feld, aber es wird davon abhängen, was Sie verwenden es für.Dies ist eine gute Praxis zu haben, Primärschlüssel pro Tabelle und key-Eigenschaft der primary key ist nicht erlaubt null-Werte...
ORM/Hibernate folgt strikt diesem Prinzip, wo jede Einheit/persistent bean haben sollte, primary key.. die Antwort auf deine Frage, die Sie versuchen zu legen null Wert auf ein primäres\nicht-nullwertfähige Spalte .... so bekommen Sie die Ausnahme... code Unten ist keine gute Praxis. Wenn Sie absichtlich Ihre Spalte null-Werte zulässt, dann natürlich keinen Sinn zu versuchen zum einfügen von null/leer Wert.. es ist besser für die Gestaltung Ihres Datenmodells vor Beginn der eigentlichen Implementierung der Anwendung.
Hoffe, das wird hilfreich sein...
Prost!
Spalte hourId festgelegt ist, nicht null, während die Tabelle erstellen und Sie versuchen, zu aktualisieren, mit dem Wert null.
Sie können die alter table-zu akzeptieren hourId als null oder set default-Wert für hourId
Lassen Sie uns überprüfen Szenario von hibernate.
Lösung :