try {
System.out.println(columnType.substring(columnType.lastIndexOf(".")+1));
setMethods.get(columnName).invoke(
obj,
new Object [] {
rsCls.getMethod("get"+columnType.substring(columnType.lastIndexOf(".")+1)).invoke(
result,
new Object [] {columnName}
)
}
);
} catch (SecurityException e) {
System.out.println("对象赋值失败,要取得的方法可能是私有,执行到:" + columnName);
e.printStackTrace();
} catch (NoSuchMethodException e) {
System.out.println("对象赋值失败,找不到要取得的方法,执行到:" + columnName);
e.printStackTrace();
控制台输出错误:java.lang.NoSuchMethodException: java.sql.ResultSet.getString()
java.lang.String
java.lang.String
java.lang.String
String
对象赋值失败,找不到要取得的方法,执行到:passwd
String
对象赋值失败,找不到要取得的方法,执行到:username
String
对象赋值失败,找不到要取得的方法,执行到:email
at java.lang.Class.getMethod(Unknown Source)
at com.liuwei.tools.test.DBUtil.select(DBUtil.java:180)
at com.liuwei.tools.test.DBUtil.main(DBUtil.java:321)
java.lang.NoSuchMethodException: java.sql.ResultSet.getString()
at java.lang.Class.getMethod(Unknown Source)
at com.liuwei.tools.test.DBUtil.select(DBUtil.java:180)
at com.liuwei.tools.test.DBUtil.main(DBUtil.java:321)
java.lang.NoSuchMethodException: java.sql.ResultSet.getString()
at java.lang.Class.getMethod(Unknown Source)
at com.liuwei.tools.test.DBUtil.select(DBUtil.java:180)
at com.liuwei.tools.test.DBUtil.main(DBUtil.java:321)

解决方案 »

  1.   

     rsCls.getMethod("get"+columnType.substring(columnType.lastIndexOf(".")+1) , String.class)
    .invoke(result, new Object [] {columnName})
      

  2.   

    /**
     * 查询数据
     * @param sql
     * @param obj 任意类型
     * 
     * @return 与 obj 相同类型的对象
     */
    public Object select(String sql, Object obj) {

    Map<String, String> fieldsType = this.getFieldsType(obj);
    Map<String, Method> setMethods = this.getSetters(obj, fieldsType);

    Iterator<String> iterator = setMethods.keySet().iterator();
    Class<ResultSet> rsCls = ResultSet.class;

    String columnName = null;
    String columnType = null;

    ResultSet result = null;

    try {
    result = this.statement.executeQuery(sql);
    } catch (SQLException e) {
    System.out.println("查询数据失败,程序终止。错误语句:\n");
    System.out.println(sql);
    }

    while(iterator.hasNext()) {
    columnName = iterator.next();
    columnType = fieldsType.get(columnName);

    try {
    System.out.println(columnType.substring(columnType.lastIndexOf(".")+1));
    setMethods.get(columnName).invoke(
    obj,
    new Object [] {
    rsCls.getMethod("get"+columnType.substring(columnType.lastIndexOf(".")+1)).invoke(
    result,
    new Object [] {"username"}
    )
    }
    );
    } catch (SecurityException e) {
    System.out.println("对象赋值失败,要取得的方法可能是私有,执行到:" + columnName);
    e.printStackTrace();
    } catch (NoSuchMethodException e) {
    System.out.println("对象赋值失败,找不到要取得的方法,执行到:" + columnName);
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    System.out.println("对象赋值失败,非法参数,执行到:" + columnName);
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    System.out.println("对象赋值失败,非法访问,执行到:" + columnName);
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    System.out.println("对象赋值失败,调用函数失败,执行到:" + columnName);
    e.printStackTrace();
    }
    }

    return obj;
    }什么问题?