2016-07-27 7 views
-3

Ich möchte Daten in meinem Projekt in die Datenbank einfügen/aktualisieren. Ich habe eine gespeicherte Prozedur in mysql erstellt. Es gibt einige Eingabeparameter, die ich aus meinem Java-Code senden muss. Manchmal können die Werte dieser Parameter null sein (wenn der Benutzer keinen Wert für dieses Feld sendet). aber ich bin nicht in der Lage, diesen Nullwert von meinem Java-Code an die gespeicherte Prozedur zu übergeben. mein Code: -Wie NULL-Wert in gespeicherte Prozedur von Java übergeben?

StoredProcedureQuery query = manager.createStoredProcedureQuery("updateProfile"); 
    query.registerStoredProcedureParameter("empName", String.class, ParameterMode.IN); 
    query.registerStoredProcedureParameter("fatherName", String.class, ParameterMode.IN); 
    query.setParameter("empId", model.getEmpName()); 
    query.setParameter("fatherName", model.getfatherName()); 
    query.execute(); 

Nun, hier bin ich immer nur EmpName vom Benutzer. Wenn ich es ausführe, bekomme ich einen Fehler.

Caused by: java.sql.SQLException: No value specified for parameter 2 
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:695) 
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:663) 
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:653) 
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:638) 
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:606) 
at com.mysql.cj.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2166) 
at com.mysql.cj.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2146) 
at com.mysql.cj.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2083) 
at com.mysql.cj.jdbc.PreparedStatement.execute(PreparedStatement.java:1120) 
at com.mysql.cj.jdbc.CallableStatement.execute(CallableStatement.java:790) 
at org.hibernate.result.internal.OutputsImpl.<init>(OutputsImpl.java:51) 

Ich habe mehr als 20 Felder, die Benutzer senden können und alle sind optional. SO ich möchte nicht hinzufügen, wenn eine Bedingung zu überprüfen, der Wert ist null in meinem Java-Code. Ich möchte also wissen, ob es eine Möglichkeit gibt, den Nullwert von Java-Code an gespeicherte Prozedur zu übergeben.

+1

Sie könnten einige weitere Details zur Verfügung stellen möchten, und wenn Möglicher Code und/oder Beispiele. – Thomas

+1

Diese Frage ist vage wie ... bitte geben Sie an, was Sie erreichen möchten, wo Sie versagen und welche Fehler Sie gegebenenfalls bekommen. – npinti

+0

Sie übergeben es auf die gleiche Weise wie ein normaler Wert. –

Antwort

0

prüfen diese Link für NULL-Wert in MySQL und

und this auf gespeicherte ausführen Prozedur

auch einen Standardwert auf Parameter in der gespeicherten Prozedur zuweisen