我需要檢查從結果集中提取的值在使用之前是否不爲NULL。 我發現這個溶液JAVA - 從結果集中檢查NULL值
int value = 0;
ResultSet rs = stmt.executeQuery(query);
if (rs.next()) {
value = rs.getInt("FIELD");
if (!rs.wasNull()) {
// use NOT NULL field value
}
}
但我需要直接檢查字段值,沒有賦值給一個變量,因爲數據類型不是預先已知的。
爲了更好地解釋爲目標,在這裏我的代碼:
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);
幾句話,代碼創建了這樣的事情:
my_object.setValue_INT(rs.getInt("FIELD"))
NB:getInt使用0爲NULL默認值值
我的目標是直接將FIELDVALUE或NULL作爲setValue_INT函數的參數。
好的。以下解決方案可以是正確的:如果'(rs.getObject(NAME)!= NULL) \t \t \t \t \t \t methodAbstractClass.invoke(my_object,methodResultSet.invoke(RS,NAME); \t \t \t \t \t其他 \t \t \t \t \t \t methodAbstractClass.invoke(my_object,NULL);' – Fab