JAVA - NULL-Wert aus einem ResultSet
Brauche ich, um zu überprüfen, ob ein Wert extrahiert aus einem ResultSet nicht NULL ist, bevor Sie es.
Ich fand diese Lösung
int value = 0;
ResultSet rs = stmt.executeQuery(query);
if (rs.next()) {
value = rs.getInt("FIELD");
if (!rs.wasNull()) {
//use NOT NULL field value
}
}
aber ich brauche, um zu überprüfen, den Wert des Feldes direkt, ohne Zuweisung an eine variable, da der Datentyp nicht im Voraus bekannt ist.
Besser erklären, das Ziel, hier mein code:
Method method_one = null, methodResultSet=null;
switch(field_type){
case "int":
method_one = clazzAbstractClass.getDeclaredMethod("setValue_INT", short[].class,String.class,int.class);
break;
case "float":
method_one = clazzAbstractClass.getDeclaredMethod("setValue_FLOAT", short[].class,String.class,float.class);
break;
case "double":
method_one = clazzAbstractClass.getDeclaredMethod("setValue_DOUBLE", short[].class,String.class,double.class);
break;
}
methodResultSet = clazzResultSet.getDeclaredMethod("get"+field_type.substring(0, 1).toUpperCase() + field_type.substring(1), String.class); //e.g. rs.getInt
//current call with NO CHECK on NULL
method_one.invoke(my_object, methodResultSet.invoke(rs, FIELD_NAME);
In wenigen Worten, der code wird etwas ähnliches:
my_object.setValue_INT(rs.getInt("FIELD"))
NB: getInt verwendet 0 als default-Wert für NULL-Wert
Mein Ziel ist es, die direkt entweder den WERT des FELDES oder NULL als argument der setValue_INT Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr wahrscheinlich könnten versuchen, mit der
ResultSet.getObject(int columnIndex)
Methode. Aus seiner JavaDoc Beschreibung:if(rs.getObject(NAME) != null) methodAbstractClass.invoke(my_object, methodResultSet.invoke(rs, NAME); else methodAbstractClass.invoke(my_object, null);
ResultSetMetaData.getColumnType(int column)
gibt einen int-Wert unter Angabe der Spalte Typ.Da NULL-dieser Weg mühsam ist, verwende ich die helper-Methoden, wie die folgenden:
Dann, statt
schreiben Sie