java Class Method类的使用

package sample;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * 
 * @author heavens
 */
public class ExecuteSqlUtil {

    private Class clsDBAccess;
    private Object objClass;

    /**
     * 调用默认构造方法,不带参数
     * 
     * @param classname
     *            调用的类名
     */
    public ExecuteSqlUtil(String classname) {
        try {
            clsDBAccess = Class.forName(classname);
            objClass = clsDBAccess.newInstance();
        } catch (InstantiationException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        }
    }

    /**
     * 调用带有参数的构造方法
     * 
     * @param classname
     *            调用类名
     * @param parameterTypes
     *            参数类型组
     * @param parameterValues
     *            参数值组
     */
    public ExecuteSqlUtil(String classname, Class[] parameterTypes,
            Object[] parameterValues) {
        try {
            clsDBAccess = Class.forName(classname);
            Constructor cs = clsDBAccess.getDeclaredConstructor(parameterTypes);// 构造方法
            objClass = cs.newInstance(parameterValues);
        } catch (InstantiationException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (IllegalArgumentException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (InvocationTargetException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (NoSuchMethodException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (SecurityException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        }
    }

    /**
     * 对update方法的封装
     * 
     * @param sql
     * @return
     */
    public boolean updateSql(String sql) {
        boolean flag = false;
        try {
            Class[] types = new Class[1];
            types[0] = String.class;
            Method mtd = clsDBAccess.getMethod("update", types);
            mtd.invoke(objClass, sql);
            Method mtd2 = clsDBAccess.getMethod("close");
            mtd2.invoke(objClass);
            flag = true;
        } catch (IllegalArgumentException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (InvocationTargetException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (NoSuchMethodException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (SecurityException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        }
        return flag;
    }

    /**
     * 对query方法的封装
     * 
     * @param sql
     * @return
     */
    public ResultSet querySql(String sql) {
        ResultSet rs = null;
        try {
            Class[] types = new Class[1];
            types[0] = String.class;
            Method mtd = clsDBAccess.getMethod("query", types);
            rs = (ResultSet) mtd.invoke(objClass, sql);
        } catch (IllegalArgumentException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (InvocationTargetException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (NoSuchMethodException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (SecurityException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        }
        return rs;
    }

    /**
     * 关闭数据库连接
     * 
     * @return
     */
    public boolean closeConnection() {
        boolean flag = false;
        try {
            Method mtd = clsDBAccess.getMethod("close");
            mtd.invoke(objClass);
            flag = true;
        } catch (IllegalArgumentException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (InvocationTargetException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (NoSuchMethodException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (SecurityException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        }
        return flag;
    }

    public static void main(String argv[]) {
        try {
            ExecuteSqlUtil mysql = new ExecuteSqlUtil(
                    "ConnPoolLcl.DatabaseAccess",
                    new Class[] { boolean.class }, new Object[] { true });
            ResultSet rs = mysql.querySql("select * from user");
            while (rs.next()) {
                System.out
                        .println(rs.getString(1) + "======" + rs.getString(2));
            }
            System.exit(0);
        } catch (SQLException ex) {
            Logger.getLogger(ExecuteSqlUtil.class.getName()).log(Level.SEVERE,
                    null, ex);
        }
    }
}


转载于:https://my.oschina.net/u/1412027/blog/187966

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值