• 我的db类库 新版


    package bean;

    public class z_usertest {

     private String name;
     
     public String getName() {
      return name;
     }

     public void setName(String name) {
      this.name = name;
     }
    }

    package defaultDBHelper;

    import java.sql.DriverManager;
    import java.text.DateFormat;
    import java.util.Date;
    import zhongheling.java.sql.face.IDBHelper;

    public class DBManage extends zhongheling.java.sql.manage.DBManage {
     
     /**** 全局得到连接的必经方法在这里定义
      * 你可以在这里使用连接池也可以为每个请求创建一个连接,DBHellper用完之后会自动关闭连接资源。
      * **/
     public java.sql.Connection getConnection() throws Exception {
      return  getConnection_static();
     }
     /****
      *  连接方法的实现
      * **/
     private static java.sql.Connection getConnection_static() throws Exception {
      // 数据库驱动
      //private final  String driver = "net.sourceforge.jtds.jdbc.Driver";
      //String driver = "net.sourceforge.jtds.jdbc.Driver";
      String driver = "oracle.jdbc.driver.OracleDriver";

      // 数据库地址以及数据源名称
      //private final String url = "jdbc:jtds:sqlserver://localhost:1433/newBBS";
      String url = "jdbc:oracle:thin:@10.38.202.37:1522:telf106";

      // 用户名
      String name = "yy0a";

      // 密码
      String password = "yy0a";

      java.sql.Connection conn = null;
      try {
       Class.forName(driver);
       conn = DriverManager.getConnection(url, name, password);
      } catch (Exception e) {
       System.out.println("连接数据库错误:" + e.getMessage());
       System.out.println(e.toString());
       throw e;
      }
      return conn;
     }
     
     
     /****
      *  设置数据库连接参数 时间格式属性
      *  父类己提供以下实现
      * **/
     /*
     private static DateFormat dateFormat = DateFormat.getDateInstance();
     */

     /****
      * 设置自动增长列字段,这个般不要需要
      * 父类默认己提供以下实现,自定义的话 重写一下即可
      * **/
     /*
     public void getIdentity(Class bealClass,IDBHelper s)throws Exception
     {
      adpater.getIdentityName(bealClass);
     }*/
     
     /****
      * 设置入库时时间格式
      * 父类默认己提供以下实现,自定义的话 重写一下即可
      * **/
     /*
     public   String formatTime(Date date) throws Exception {
      return dateFormat.format(date);
     }*/

     /****
      * IExceptionNoEx接口异常处理
      * 你可以在这里打印或 记录日志
      * 父类默认己提供以下实现,自定义的话 重写一下即可
      * **/
     
     /*
     public   void printException(String sql, String message, Exception e)throws Exception {
      printException_Static(sql,message,e);
     }*/
     
     /****
      * IExceptionNoEx接口异常处理
      * 你可以在这里打印或 记录日志
      * 父类默认己提供以下实现,自定义的话 重写一下即可
      * *******/
     
     /*
     public   void printExceptionNoEx(String sql, String message, Exception e) {
      printExceptionNoEx_Static(sql,message,e);
     }*/
     

     /****
      * 父类静态私有类供参考
      * *******/
     /*
     private static String formatTime_Static(Date date) throws Exception {
      return dateFormat.format(date);
     }
     */

     /****
      * 父类静态私有类供参考
      * *******/
     /*
     private static void printException_Static(String sql, String message, Exception e)throws Exception {
      System.out.println("SQL:"+sql);
      System.out.println("MESSAGE:"+message);
      System.out.println(e.toString());
      e.printStackTrace();
      throw e;
     }
     */
     

     /****
      * 父类静态私有类供参考
      * *******/
    /*
     private static void printExceptionNoEx_Static(String sql, String message, Exception e){
      System.out.println("SQL:"+sql);
      System.out.println("MESSAGE:"+message);
      System.out.println(e.toString());
      e.printStackTrace();
     }
    */
    }


    package defaultDBHelper;

    public class OreacleDBHelper<E> extends zhongheling.java.sql.dbhelper.DHHelperNoEx<E> implements zhongheling.java.sql.face.IDBHelperNoEx<E>{
     
     public OreacleDBHelper()
     {
      //指定DB共公方法管类(相关参数在DBManage类代码里设置)
      super(new defaultDBHelper.DBManage());
      //给DB分配Oracle适配器
      this.getDBManage().adpater=new zhongheling.java.sql.adapter.OracleAdapter<E>();
      //给DB分配sqlserver适配器
      //this.getDBManage().adpater=new zhongheling.java.sql.adapter.SqlServerAdapter<E>());
     
     }
    }

    package main;

    import java.util.List;

    import defaultDBHelper.OreacleDBHelper;


    import bean.z_usertest;

    public class main {

     public static void main(String[] args) {
      OreacleDBHelper<z_usertest> db = new OreacleDBHelper<z_usertest>();
      List<z_usertest> list = null;
      list = db.getBeanList("select * from z_usertest  ", z_usertest.class);
      for (int i = 0; i < list.size(); i++) {
       System.out.println(list.get(i).getName());
      }
      z_usertest user;
      Object[] objs=new Object[1];
      objs[0]="梅西";
      String sql=" select * from z_usertest where name =? ";
      user=db.getBean(sql,z_usertest.class,objs);
      System.out.println(user.getName()+"@@");
     }

    }


    package zhongheling.java.sql.adapter;

    public   interface DBAdapter<E>   {
     
     public  abstract String  getIdentityName(Class beanClass) throws Exception ;

     public  abstract String getInsertSQL(Object bean) throws Exception ;
     
     public  abstract String getUpdateSQL(Object bean, String where) throws Exception;

    }


    package zhongheling.java.sql.adapter;

    import java.util.Date;

    import zhongheling.java.sql.basic.DBBasic;

    public class OracleAdapter<E> extends DBBasic<E>  implements  DBAdapter {


     // 根据表名得到自动增长列
     public    String getIdentityName(Class beanClass) throws Exception
     {
      return getIdentityName_static(beanClass.getCanonicalName());
     }
     
     /*
      *
      * Object obj 实体类斌好值的的实例
      *
      * 根据实体类 get方法(识别方式是get开头的方法)来生成 insert SQL字符串
      *
      * 此方法自动避开自动增长列
      *
      */
     public    String getInsertSQL(Object bean) throws Exception
     {
        return getInsertSQL_static(bean);
     }
     
     /*
      *
      * Object obj 实体类斌好值的的实例
      *
      * 根据实体类 get方法(识别方式是get开头的方法)来生成 Uqdate SQL字符串
      *
      * where条件自己指定 包括Where关键字也要自己补充
      *
      * 此方法自动避开自动增长列
      *
      */
     public   String getUpdateSQL(Object bean, String where) throws Exception
     {
      return   getUpdateSQL_static(  bean,   where);
     }
     
     private static String getInsertSQL_static(Object bean) throws Exception {
      Class cla = bean.getClass();
      // 定义一个新实体指针
      StringBuffer str = new StringBuffer();
      try {
       str.append("insert into " + cla.getSimpleName() + "");
       str.append(" ( ");

       // 得到传进来的实体的所有属性信息列表
       java.lang.reflect.Method[] methods = cla.getDeclaredMethods();
       boolean isFist = true;
       // 遍历所有方法
       for (java.lang.reflect.Method method : methods) {
        String GetMethodParameterTypes = "";
        GetMethodParameterTypes = method.getReturnType().toString();
        // 如果方法存在返回值

        if (!GetMethodParameterTypes.equals("void"))
         ;
        {
         String methodName = method.getName().toString();

         String fieldName = methodName.substring(3);

         if (GetMethodParameterTypes != null
           && methodName.substring(0, 3).equals("get")) {

          if (!fieldName.equalsIgnoreCase(getIdentityName_static(cla
            .getSimpleName()))) {
           if (!isFist) {
            str.append("," + fieldName);
           } else {
            str.append(fieldName);
            isFist = false;
           }
          }
         }
        }
       }
       str.append(") values (");
       isFist = true;
       // 遍历所有方法
       for (java.lang.reflect.Method method : methods) {
        String GetMethodParameterTypes = "";
        GetMethodParameterTypes = method.getReturnType().getCanonicalName();
        // 如果方法存在返回值
        if (!GetMethodParameterTypes.equals("void"))
         ;
        {
         String methodName = method.getName().toString();
         String fieldName = methodName.substring(3);
         if (!fieldName.equalsIgnoreCase(getIdentityName_static(cla
           .getSimpleName()))) {
          Object[] nullParameter = {};
          Object object = null;
          if (GetMethodParameterTypes != null
            && methodName.substring(0, 3).equals("get")) {
           if (GetMethodParameterTypes.equalsIgnoreCase("")) {
            object = DBBasic.getDBManage().formatTime((Date) object);
           }
           if (IsString(GetMethodParameterTypes)) {
            if (!isFist) {
             object = method.invoke(bean, nullParameter);
             str.append("," + "'" + object + "'");
            } else {
             object = method.invoke(bean, nullParameter);
             str.append("'" + object + "'");
             isFist = false;
            }
           } else {
            if (!isFist) {
             str
               .append(","
                 + method.invoke(bean,
                   nullParameter));
            } else {
             str.append(method
               .invoke(bean, nullParameter));
             isFist = false;
            }
           }
          }
         }
        }
       }
       str.append(")");
      } catch (Exception e) {
       DBBasic.getDBManage().printException(null,"根据" + bean.getClass().getCanonicalName()
         + "对象生成Insert SQL字符串时异常:" + e.getMessage(), e);
      }
      return str.toString();
     }

     private static String getIdentityName_static(String TableName) throws Exception {
      return "rowid";
     }
     
     private static String getUpdateSQL_static(Object obj, String where)
       throws Exception {
      Class cla = obj.getClass();
      // 定义一个新实体指针
      StringBuffer str = new StringBuffer();
      try {
       str.append("update  " + cla.getSimpleName() + " ");
       str.append(" set ");

       // 得到传进来的实体的所有属性信息列表
       java.lang.reflect.Method[] methods = cla.getDeclaredMethods();
       boolean isFist = true;

       // 遍历所有方法
       for (java.lang.reflect.Method method : methods) {
        String GetMethodParameterTypes = "";
        GetMethodParameterTypes = method.getReturnType().getCanonicalName();
        // 如果方法存在返回值
        if (!GetMethodParameterTypes.equals("void"))
         ;
        {
         String methodName = method.getName().toString();
         String fieldName = methodName.substring(3);
         if (!fieldName.equalsIgnoreCase(getIdentityName_static(cla
           .getSimpleName()))) {
          Object[] nullParameter = {};
          Object object = null;
          if (GetMethodParameterTypes != null
            && methodName.substring(0, 3).equals("get")) {
           if (GetMethodParameterTypes.equalsIgnoreCase("")) {
            object = DBBasic.getDBManage().formatTime((Date) object);
           }
           if (IsString(GetMethodParameterTypes)) {
            if (!isFist) {
             object = method.invoke(obj, nullParameter);
             str.append("," + " " + fieldName + " = ");
             str.append("'" + object + "'");
            } else {
             object = method.invoke(obj, nullParameter);
             str.append(" " + fieldName + " = ");
             str.append("'" + object + "'");
             isFist = false;
            }
           } else {
            if (!isFist) {
             str
               .append(", "
                 + fieldName
                 + " = "
                 + method.invoke(obj,
                   nullParameter));
            } else {
             str.append(method
               .invoke(obj, nullParameter));
             isFist = false;
            }
           }
          }
         }
        }
       }
       str.append(" where 1=1 " + where + " ");
      } catch (RuntimeException e) {
       DBBasic.getDBManage().printException(null,"根据" + obj.getClass().getCanonicalName()
         + "对象生成upldate SQL字符串时异常:" + e.getMessage(), e);
      }
      return str.toString();
     }
    }


    package zhongheling.java.sql.adapter;

    import java.util.Date;
    import zhongheling.java.sql.basic.DBBasic;

    public class SqlServerAdapter<E>extends DBBasic<E> implements  DBAdapter{

     // 根据表名得到自动增长列
     public    String getIdentityName(Class beanClass ) throws Exception
     {
      return getIdentityName_static(beanClass);
     }
     
     /*
      *
      * Object obj 实体类斌好值的的实例
      *
      * 根据实体类 get方法(识别方式是get开头的方法)来生成 insert SQL字符串
      *
      * 此方法自动避开自动增长列
      *
      */
     public    String getInsertSQL(Object bean) throws Exception
     {
        return getInsertSQL_static(bean);
     }
     
     /*
      *
      * Object obj 实体类斌好值的的实例
      *
      * 根据实体类 get方法(识别方式是get开头的方法)来生成 Uqdate SQL字符串
      *
      * where条件自己指定 包括Where关键字也要自己补充
      *
      * 此方法自动避开自动增长列
      *
      */
     public   String getUpdateSQL(Object bean, String where) throws Exception
     {
      return   getUpdateSQL_static( bean,   where);
     }
     
     private static String getInsertSQL_static(Object bean) throws Exception {
      Class cla = bean.getClass();
      // 定义一个新实体指针
      StringBuffer str = new StringBuffer();
      try {
       str.append("insert into [" + cla.getSimpleName() + "]");
       str.append(" ( ");

       // 得到传进来的实体的所有属性信息列表
       java.lang.reflect.Method[] methods = cla.getDeclaredMethods();
       boolean isFist = true;
       // 遍历所有方法
       for (java.lang.reflect.Method method : methods) {
        String GetMethodParameterTypes = "";
        GetMethodParameterTypes = method.getReturnType().toString();
        // 如果方法存在返回值

        if (!GetMethodParameterTypes.equals("void"))
         ;
        {
         String methodName = method.getName().toString();

         String fieldName = methodName.substring(3);

         if (GetMethodParameterTypes != null
           && methodName.substring(0, 3).equals("get")) {

          if (!fieldName.equalsIgnoreCase(getIdentityName_static(cla))) {
           if (!isFist) {
            str.append("," + fieldName);
           } else {
            str.append(fieldName);
            isFist = false;
           }
          }

         }

        }
       }
       str.append(") values (");
       isFist = true;
       // 遍历所有方法
       for (java.lang.reflect.Method method : methods) {
        String GetMethodParameterTypes = "";
        GetMethodParameterTypes = method.getReturnType().toString();
        // 如果方法存在返回值
        if (!GetMethodParameterTypes.equals("void"))
         ;
        {
         String methodName = method.getName().toString();
         String fieldName = methodName.substring(3);
         if (!fieldName.equalsIgnoreCase(getIdentityName_static(cla))) {
          Object[] nullParameter = {};
          Object object = null;
          if (GetMethodParameterTypes != null
            && methodName.substring(0, 3).equals("get")) {
           if (GetMethodParameterTypes.equalsIgnoreCase("")) {
            object = DBBasic.getDBManage().formatTime((Date) object);
           }
           if (IsString(GetMethodParameterTypes)) {
            if (!isFist) {
             object = method.invoke(bean, nullParameter);
             str.append("," + "'" + object + "'");
            } else {
             object = method.invoke(bean, nullParameter);
             str.append("'" + object + "'");
             isFist = false;
            }
           } else {
            if (!isFist) {
             str
               .append(","
                 + method.invoke(bean,
                   nullParameter));
            } else {
             str.append(method
               .invoke(bean, nullParameter));
             isFist = false;
            }
           }
          }
         }
        }
       }
       str.append(")");
      } catch (Exception e) {
       DBBasic.getDBManage().printException(null,"根据" + bean.getClass().getCanonicalName()
         + "对象生成Insert SQL字符串时异常:" + e.getMessage(), e);
      }
      return str.toString();
     }

     private static String getIdentityName_static(Class cla) throws Exception {
      String sql = "select name  from syscolumns   where id=object_id('["
        + cla.getCanonicalName()
        + "]') and COLUMNPROPERTY( syscolumns.id,syscolumns.name,'IsIdentity') =1";
      return (String)DBBasic.getObj(cla, sql,null);
     }
     private static String getUpdateSQL_static(Object obj, String where)
       throws Exception {
      Class cla = obj.getClass();
      // 定义一个新实体指针
      StringBuffer str = new StringBuffer();
      try {
       str.append("update [" + cla.getSimpleName() + "]");
       str.append(" set ");

       // 得到传进来的实体的所有属性信息列表
       java.lang.reflect.Method[] methods = cla.getDeclaredMethods();
       boolean isFist = true;

       // 遍历所有方法
       for (java.lang.reflect.Method method : methods) {
        String GetMethodParameterTypes = "";
        GetMethodParameterTypes = method.getReturnType().toString();
        // 如果方法存在返回值
        if (!GetMethodParameterTypes.equals("void"))
         ;
        {
         String methodName = method.getName().toString();
         String fieldName = methodName.substring(3);
         if (!fieldName.equalsIgnoreCase(getIdentityName_static(cla))) {
          Object[] nullParameter = {};
          Object object = null;
          if (GetMethodParameterTypes != null
            && methodName.substring(0, 3).equals("get")) {
           if (GetMethodParameterTypes.equalsIgnoreCase("")) {
            object = DBBasic.getDBManage().formatTime((Date) object);
           }
           if (IsString(GetMethodParameterTypes)) {
            if (!isFist) {
             object = method.invoke(obj, nullParameter);
             str.append("," + " " + fieldName + " = ");
             str.append("'" + object + "'");
            } else {
             object = method.invoke(obj, nullParameter);
             str.append(" " + fieldName + " = ");
             str.append("'" + object + "'");
             isFist = false;
            }
           } else {
            if (!isFist) {
             str
               .append(", "
                 + fieldName
                 + " = "
                 + method.invoke(obj,
                   nullParameter));
            } else {
             str.append(method
               .invoke(obj, nullParameter));
             isFist = false;
            }
           }
          }
         }
        }
       }
       str.append(" where 1=1 " + where + " ");
      } catch (RuntimeException e) {
       DBBasic.getDBManage().printException(null,"根据" + obj.getClass().getCanonicalName()
         + "对象生成upldate SQL字符串时异常:" + e.getMessage(), e);
      }
      return str.toString();
     }
    }


    package zhongheling.java.sql.basic;

    import java.lang.reflect.Method;
    import java.sql.Date;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.sql.PreparedStatement;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Types;
    import java.sql.CallableStatement;
    import java.util.ArrayList;
    import java.util.List;

    import zhongheling.java.sql.pack.PreparedStatementPack;
    import zhongheling.java.sql.pack.ResultSetPack;

    public abstract class DBBasic<E> {

     private static zhongheling.java.sql.manage.DBManageSuper DBManage;

     protected static java.sql.Connection getConnection(Connection conn)
       throws Exception {
      return DBManage.getConnection();
     }

     protected static boolean execute(Connection conn, Statement stat, String sql)
       throws Exception {
      boolean bl = false;
      try {
       conn = getConnection(conn);
       stat = conn.createStatement();
       bl = stat.execute(sql);
      } catch (Exception e) {
       DBManage.printException(sql, "execute", e);
      } finally {
       close(conn, stat);
      }
      return bl;
     }

     protected static ResultSet executeQuery(Connection conn, Statement stat,
       String sql) throws Exception {
      ResultSet rs = null;
      try {
       conn = getConnection(conn);
       stat = conn.createStatement();
       rs = stat.executeQuery(sql);
      } catch (Exception e) {
       DBManage.printException(sql, "executeQuery", e);
      } finally {
       close(null, stat);
      }
      return rs;
     }

     protected static int executeUpdate(Connection conn, Statement stat,
       String sql) throws Exception {
      int num = 0;
      try {
       conn = getConnection(conn);
       stat = conn.createStatement();
       num = stat.executeUpdate(sql);
      } catch (Exception e) {
       DBManage.printException(sql, "executeUpdate", e);
      } finally {
       close(null, stat);
      }
      return num;
     }

     protected static boolean prem_execute(PreparedStatement prem,
       Connection conn, String sql, Object[] parameters) throws Exception {

      boolean bl = false;
      try {
       conn = getConnection(conn);
       if (conn != null) {
        prem = conn.prepareStatement(sql);
       }
       bl = prem.execute(sql);
      } catch (Exception e) {
       DBManage.printException(sql, "prem_execute", e);
      } finally {
       close(conn, prem);
      }
      return bl;
     }

     protected static java.sql.ResultSet prem_executeQuery(
       PreparedStatement prem, Connection conn, String sql, Object[] parameters)
       throws Exception {
      java.sql.ResultSet rs = null;
      try {
       conn = getConnection(conn);
       if (conn != null) {
        prem = conn.prepareStatement(sql);
       }
       if (parameters != null) {
        SetPrepareStatement(prem, parameters);
       }
       rs = prem.executeQuery();
      } catch (Exception e) {
       DBManage.printException(sql, "prem_executeQuery", e);
      }
      return rs;
     }

     protected static int prem_executeUpdate(PreparedStatement prem,
       Connection conn, String sql, Object[] parameters) throws Exception {
      int i = 0;
      try {
       conn = getConnection(conn);
       if (conn != null) {
        prem = conn.prepareStatement(sql);
       }
       i = prem.executeUpdate();
      } catch (Exception e) {
       DBManage.printException(sql, "prem_executeUpdate", e);
      } finally {
       close(conn, prem);
      }
      return i;
     }

     protected static void Process(Connection conn, CallableStatement cst,
       String sql) throws Exception {
      try {
       cst = conn.prepareCall(sql);
       cst.setInt(1, 100);// 设置输入参数值
       cst.registerOutParameter(2, Types.VARCHAR);// 将第2个参数设为输出
       cst.execute();
       String res = cst.getString(2);// 获得执行后的输出值
       System.out.println(res);// 打印输出值
      } catch (SQLException e) {
       DBManage.printException(sql, "Process", e);
      } finally {
       close(conn, cst);
      }
     }

     /*
      *
      * Object obj 实体类斌好值的的实例
      *
      * 根据实体类 get方法(识别方式是get开头的方法)来保存实体
      *
      * 此方法自动避开自动增长列
      *
      */

     protected static int addBean_static(Object bean) throws Exception {
      int i = 0;
      try {
       PreparedStatement prem = null;
       Connection conn = null;
       i = prem_executeUpdate(prem, conn, DBManage.adpater.getInsertSQL(bean),null);
      } catch (Exception e) {
       DBManage.printException(null, "add "
         + bean.getClass().getCanonicalName() + "对象时异常:", e);
      }
      return i;
     }

     
     
     protected static Object getObj(Class beanClass, String sql, Object[] parameters)
       throws Exception {
      Object obj = null;
      ResultSet rs = null;
      PreparedStatement prem = null;
      Connection conn = null;
      try {
       rs = prem_executeQuery(prem, conn, sql,parameters);
       if (rs.next()) {
        Method packMethod = null;
        Class[] classes = { Integer.class };
        Object[] p = { new Integer(0) };
        packMethod = getPackMethod(beanClass.getCanonicalName(), classes,
          packMethod, rs.getClass());
        obj = packMethod.invoke(rs, p);
       }
      } catch (Exception e) {
       DBManage.printException(null, "调用StaticDBHelper的getObj方法执行" + sql
         + "时异常:", e);
      } finally {
       close(conn, prem, rs);
      }
      return obj;
     }

     protected static List<String> getStringList_static(String sql, Object[] parameters)
       throws Exception {
      List<String> i = null;

      ResultSet rs = null;
      PreparedStatement prem = null;
      Connection conn = null;
      try {
       rs = prem_executeQuery(prem, conn, sql,parameters);
       while (rs.next()) {
        i.add(rs.getString(1));
       }
      } catch (Exception e) {
       DBManage.printException(sql, "getStringList", e);
      } finally {
       close(conn, prem, rs);
      }
      return i;
     }

     protected static List<Object> getBeanList(String sql, Class beanClass,
        Statement stat,PreparedStatement prem, Connection conn, boolean IsPack, Object[] parameters)
       throws Exception {
      List<Object> list = null;
      ResultSet rs = null;
      try {
       if(parameters==null)
       {
        rs = executeQuery(conn, stat, sql);
       }
       else
       {
        rs = prem_executeQuery(prem, conn, sql,parameters);
       }
       list = (List<Object>) RsToBeanList(rs, beanClass, false, IsPack);
      } catch (Exception e) {
       DBManage.printException(sql, "getBeanList", e);
      } finally {
       close(stat, prem, conn, null, rs);
      }
      return list;
     }

     

     /*
      *
      * Object obj 实体类斌好值的的实例
      *
      * 根据实体类 get方法(识别方式是get开头的方法)来更新
      *
      * where条件自己指定 包括Where关键字也要自己补充
      *
      * 此方法自动避开自动增长列
      *
      */

     protected static int updateByWhere_static(Object obj, String where,Object[] parameters)
       throws Exception

     {
      int i = 0;
      try {
       PreparedStatement prem = null;
       Connection conn = null;
       i = prem_executeUpdate(prem, conn, DBManage.adpater.getUpdateSQL(obj,where),parameters);
      } catch (Exception e) {
       DBManage.printException(null, "updateByWhere", e);
      }
      return i;
     }

     /*
      * 参数 ResultSet rs 查询后的带连结的结果集对象 参数 Class 需要设置到的实体的Class信息 返回 List<E> 实体列表
      *
      * 根据实体类 set方法(识别方式是set开头并无返回值的方法)来读ResultSet对象
      * 使用时需保证实体除了属性的set方法之外没有别的set方法, 实体的set方法 一般与查询后返回的结果集中的列名一一对应,
      * 使用时如果实体的set方法与ResultSet对象中的列名不一一对应最少应保证实体的set方法在ResultSet对象中有列名与之对应。
      *
      */
     protected static List<Object> RsToBeanList(ResultSet rs, Class BeanClass,
       boolean IsOneRow, boolean IsPack) throws Exception {

      List<Object[]> rowInfoList = getRowInfoList(BeanClass, IsPack);
      List<Object> beanList = null;
      try {
       beanList = new ArrayList<Object>();
       Object pack = null;
       if (IsOneRow) {
        if (rs.next())// 读每行
        {
         setBean(rs, BeanClass, IsPack, rowInfoList, beanList, pack);
        }
       } else {
        while (rs.next())// 读每行
        {
         setBean(rs, BeanClass, IsPack, rowInfoList, beanList, pack);
        }
       }
      } catch (Exception e) {
       DBManage.printException(null, "ResultSet对象信息封装到BeanList时异常:"
         + e.getMessage(), e);
      }
      return beanList;
     }

     /*
      *
      * 参数 Class 需要设置到的实体的Class信息 返回 List<Object[]> list
      * list中的每个元素Object[]按约定的位置放三个元素 Object[0]实际为Method对象 是包装类的getXX()方法
      * (包装类是一个自定义的适配器用于包装ResultSet对象的getXX()结果便于反射调用) Object[1]实际为Method对象
      * 是实体类的set方法 Object[2]实际为String对象 是实体类的属性(根据截取set方法名的后面字节得到)
      *
      */
     private static List<Object[]> getRowInfoList(Class cla, boolean IsPack)
       throws Exception {
      List<Object[]> RowInfoList = new ArrayList<Object[]>();

      // 得到实体的所有方法列表
      java.lang.reflect.Method[] methods = cla.getDeclaredMethods();
      // 遍历所有方法
      for (java.lang.reflect.Method method : methods) {
       getRowInfo(IsPack, RowInfoList, method);
      }
      return RowInfoList;
     }

     private static void SetPrepareStatement(PreparedStatement prem,
      Object[] parameters) throws Exception {
      Class[] classes =null;
      Object[] setMethodParameters=new Object[2];
      Method method = null;
       for (int i = 0; i < parameters.length; i++) {
        if (parameters[i] != null) {
         classes=new Class[2];
         classes[0]=Integer.class;
         method =getPrepareStatementMethod(parameters[i].getClass().getCanonicalName(),classes,PreparedStatementPack.class);  
         setMethodParameters[0]=new Integer(i+1);
         setMethodParameters[1]=parameters[i];
         DBManage.psPack.setPreparedStatement(prem);
         method.invoke(DBManage.psPack, setMethodParameters);
        }
       }
     }

     // 得到要读的字段的信息
     private static void getRowInfo(boolean IsPack, List<Object[]> RowInfoList,
       java.lang.reflect.Method method) throws Exception {
      // 得到形参数组(如果有)
      Class[] typeClass = method.getParameterTypes();
      // 如果方法存在一个以DBHelper形参
      if (null != typeClass && typeClass.length > 0) {
       // 得到形参类型字符串
       String MethodParameterTypes = "";
       MethodParameterTypes = typeClass[0].getCanonicalName();
       // 得到当前方法名字
       String methodName = method.getName().toString();
       String fieldName = null;
       Class[] classes = { String.class };
       // 如果是set开头的方法
       if (MethodParameterTypes != null
         && methodName.substring(0, 3).equals("set")) {
        fieldName = methodName.substring(3);
        Object[] t = new Object[3];
        Method packMethod = null;
        Class packClass = null;
        packClass = setPackClass(IsPack);
        packMethod = getPackMethod(MethodParameterTypes, classes,
          packMethod, packClass);
        t[0] = packMethod;
        t[1] = method;
        t[2] = fieldName;
        RowInfoList.add(t);
       }
      }
     }

     // getRowInfo方法的子方法,用于设置是得到哪个对像的getXX()方法(rs对象或Pack对象)
     private static Class setPackClass(boolean IsPack) throws Exception {
      Class packClass;
      if (IsPack) {
       packClass = ResultSetPack.class;
      } else {
       packClass = ResultSet.class;
      }
      return packClass;
     }

     // getInfo方法里的功能方法,得到要包装器或RS对象要执行的getXX()方法
     @SuppressWarnings("unchecked")
     private static Method getPackMethod(String MethodParameterTypes,
       Class[] classes, Method packMethod, Class packClass)
       throws Exception {
      if (MethodParameterTypes.equals("java.lang.String")) {
       packMethod = packClass.getMethod("getString", classes);// 得到包装类的方法
      } else if (MethodParameterTypes.equals("int")
        || MethodParameterTypes.equals("java.lang.Integer")) {
       packMethod = packClass.getMethod("getInt", classes);
      } else if (MethodParameterTypes.equals("java.util.Date")) {
       packMethod = packClass.getMethod("getDate", classes);
      } else if (MethodParameterTypes.equals("short")
        || MethodParameterTypes.equals("java.lang.Short")) {
       packMethod = packClass.getMethod("getShort", classes);
      } else if (MethodParameterTypes.equals("float")
        || MethodParameterTypes.equals("java.lang.Float")) {
       packMethod = packClass.getMethod("getFloat", classes);
      } else if (MethodParameterTypes.equals("double")
        || MethodParameterTypes.equals("java.lang.Double")) {
       packMethod = packClass.getMethod("getDouble", classes);
      } else if (MethodParameterTypes.equals("byte")
        || MethodParameterTypes.equals("java.lang.Byte")) {
       packMethod = packClass.getMethod("getByte", classes);
      } else if (MethodParameterTypes.equals("long")
        || MethodParameterTypes.equals("java.lang.Long")) {
       packMethod = packClass.getMethod("getLong", classes);
      } else {
       packMethod = packClass.getMethod("getObject", classes);
      }
      return packMethod;
     }

     // getInfo方法里的功能方法,得到要包装器或RS对象要执行的getXX()方法
     @SuppressWarnings("unchecked")
     private static Method getPrepareStatementMethod(
       String MethodParameterTypes, Class[] classes,
       Class  Cla) throws Exception {
      Method method=null;
      if (MethodParameterTypes.equals("java.lang.String")) {
       classes[1]=String.class;
       method=Cla.getMethod("setString",classes);// 得到包装类的方法;
      } else if (MethodParameterTypes.equals("int")
        || MethodParameterTypes.equals("java.lang.Integer")) {
       classes[1]=int.class;
       method=Cla.getMethod("setInt", classes);
      } else if (MethodParameterTypes.equals("java.util.Date")) {
       classes[1]=Date.class;
       method=Cla.getMethod("setDate", classes);
      } else if (MethodParameterTypes.equals("short")
        || MethodParameterTypes.equals("java.lang.Short")) {
       classes[1]=short.class;
       method=Cla.getMethod("setShort", classes);
      } else if (MethodParameterTypes.equals("float")
        || MethodParameterTypes.equals("java.lang.Float")) {
       classes[1]=float.class;
       method=Cla.getMethod("setFloat", classes);
      } else if (MethodParameterTypes.equals("double")
        || MethodParameterTypes.equals("java.lang.Double")) {
       classes[1]=double.class;
       method=Cla.getMethod("setDouble", classes);
      } else if (MethodParameterTypes.equals("byte")
        || MethodParameterTypes.equals("java.lang.Byte")) {
       classes[1]=byte.class;
       method=Cla.getMethod("setByte", classes);
      } else if (MethodParameterTypes.equals("long")
        || MethodParameterTypes.equals("java.lang.Long")) {
       classes[1]=long.class;
       method=Cla.getMethod("setLong", classes);
      } else {
       classes[1]=Object.class;
       method=Cla.getMethod("setObject", classes);
      }
      return   method;// 得到包装类的方法;
     }

     // RsToBeanList的子方法,用于设置RS对象每行的信息到Bean对象中
     private static void setBean(ResultSet rs, Class BeanClass, boolean IsPack,
       List<Object[]> rowInfoList, List<Object> beanList, Object pack)
       throws Exception {
      Object newBean;
      newBean = (Object) BeanClass.newInstance();// 新的bean实例
      // 设置每字段i表示第几个字段
      for (int i = 0; i < rowInfoList.size(); i++) {
       // 定义一个值对象指针
       Object value = null;

       // 得到包装类的方法
       Method packMethod = (Method) rowInfoList.get(i)[0];

       // 得到set方法
       Method setMethod = (Method) rowInfoList.get(i)[1];
       // 是否启用包装器
       if (IsPack) {
        // 设置ResultSet对象到包装器对象
        ((ResultSetPack) pack).setResultSet(rs);
       } else {
        // 直接使用ResultSet
        pack = rs;
       }
       // 得到数据库对应该set方法的列名
       String columnLabel = (String) rowInfoList.get(i)[2];

       // 调用包装类的get方法得到字段值
       value = packMethod.invoke(pack, columnLabel);

       // 设置值到字段
       setMethod.invoke(newBean, value);
      }
      beanList.add(newBean);
     }

     // 用于生成sql语句判断是否加双引号,返回真是加双引号,返回假时加单引号
     protected static boolean IsString(String type) throws Exception {
      if (type.equalsIgnoreCase("int") || type.equals("java.lang.Integer")
        || type.equalsIgnoreCase("Short")
        || type.equals("java.lang.Short")
        || type.equalsIgnoreCase("Float")
        || type.equals("java.lang.Float")
        || type.equalsIgnoreCase("Double")
        || type.equals("java.lang.Double")
        || type.equalsIgnoreCase("Byte")
        || type.equals("java.lang.Byte")
        || type.equalsIgnoreCase("short")
        || type.equals("java.lang.Short")
        || type.equalsIgnoreCase("long")
        || type.equals("java.lang.Long")) {
       return false;
      } else {
       return true;
      }
     }

     protected static void close(Connection conn, Statement stat)
       throws Exception {
      close(stat, null, conn, null, null);
     }

     protected static void close(Connection conn, PreparedStatement prem)
       throws Exception {
      close(null, prem, conn, null, null);
     }

     protected static void close(Connection conn, PreparedStatement prem,
       ResultSet rs) throws Exception {
      close(null, prem, conn, null, rs);
     }

     protected static void close(Statement stat, PreparedStatement prem,
       Connection conn, CallableStatement cst, ResultSet rs)
       throws Exception {
      try {
       if (null != conn) {
        conn.close();
       }
       if (null != stat) {
        stat.close();
       }
       if (null != prem) {
        prem.close();
       }
       if (null != cst) {
        cst.close();
       }
       if (null != rs) {
        rs.close();
       }
      } catch (SQLException e) {
       DBManage.printException(null, "数据库操作资源己关闭:" + e.getMessage(), e);
      }
     }

     protected static void setDBManage(
       zhongheling.java.sql.manage.DBManageSuper manage) {
      DBManage = manage;
     }

     protected static zhongheling.java.sql.manage.DBManageSuper getDBManage() {
      return DBManage;
     }

    }


    package zhongheling.java.sql.dbhelper;

    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.sql.PreparedStatement;
    import java.sql.Connection;
    import java.sql.CallableStatement;
    import java.text.DateFormat;
    import java.util.Date;
    import java.util.List;

    import zhongheling.java.sql.basic.DBBasic;
    import zhongheling.java.sql.face.IDBHelper;
    import zhongheling.java.sql.manage.DBManageSuper;
    import zhongheling.java.sql.pack.ResultSetPack;

    public class DBHelper<E> extends DBBasic<E> implements IDBHelper<E> {

     private Statement stat = null;

     private PreparedStatement prem = null;

     private Connection conn = null;

     private CallableStatement cst = null;

     private DBBasic<E> StaticDB;

     protected static DateFormat dateFormat = DateFormat.getDateInstance();

     protected static ResultSetPack pack = null;//得到包装类对象

     public DBHelper(DBManageSuper manage) {
      StaticDB.setDBManage(manage);
     }

     public boolean execute(String sql) throws Exception {

      return StaticDB.execute(conn, stat, sql);

     }

     public ResultSet executeQuery(String sql) throws Exception {

      return StaticDB.executeQuery(conn, stat, sql);
     }

     public int executeUpdate(String sql) throws Exception {
      return StaticDB.executeUpdate(conn, stat, sql);
     }

     public boolean prem_execute(String sql) throws Exception {

      return StaticDB.prem_execute(prem, conn, sql, null);
     }

     public java.sql.ResultSet prem_executeQuery(String sql) throws Exception {

      return StaticDB.prem_executeQuery(prem, conn, sql, null);
     }

     public int prem_executeUpdate(String sql) throws Exception {

      return StaticDB.prem_executeUpdate(prem, conn, sql, null);
     }

     public boolean prem_execute(String sql, Object[] parameters) throws Exception {

      return StaticDB.prem_execute(prem, conn, sql, parameters);
     }

     public java.sql.ResultSet prem_executeQuery(String sql, Object[] parameters)
       throws Exception {

      return StaticDB.prem_executeQuery(prem, conn, sql, parameters);
     }

     public int prem_executeUpdate(String sql, Object[] parameters) throws Exception {

      return StaticDB.prem_executeUpdate(prem, conn, sql, parameters);
     }

     public void Process(String sql) throws Exception {
      StaticDB.Process(conn, cst, sql);
     }

     public E getBean(String sql, Class bean) throws Exception {
      if (DBHelper.pack != null) {
       return (E) StaticDB.getBeanList(sql, bean,stat, prem, conn, true, null)
         .get(0);
      } else {
       return (E) StaticDB.getBeanList(sql, bean, stat,prem, conn, false, null)
         .get(0);
      }
     }

     public int updateBean(E bean) throws Exception {
      return StaticDB.updateByWhere_static(bean, null, null);
     }

     public int updateByWhere(E bean, String where) throws Exception {
      return StaticDB.updateByWhere_static(bean, where, null);
     }

     public List<E> getBeanList(String sql, Class bean) throws Exception {
      if (DBHelper.pack != null) {
       return (List<E>) StaticDB.getBeanList(sql, bean,stat, prem, conn, true,
         null);
      } else {
       return (List<E>) StaticDB.getBeanList(sql, bean, stat,prem, conn, false,
         null);
      }
     }

     public int updateBean(E bean, Object[] parameters) throws Exception {
      return StaticDB.updateByWhere_static(bean, null, parameters);
     }

     public int updateByWhere(E bean, String where, Object[] parameters)
       throws Exception {
      return StaticDB.updateByWhere_static(bean, where, parameters);
     }

     public E getBean(String sql, Class bean, Object[] parameters) throws Exception {
      if (DBHelper.pack != null) {
       return (E) StaticDB.getBeanList(sql, bean, stat,prem, conn, true, parameters)
         .get(0);
      } else {
       return (E) StaticDB.getBeanList(sql, bean, stat,prem, conn, false, parameters)
         .get(0);
      }
     }

     public List<E> getBeanList(String sql, Class bean, Object[] parameters)
       throws Exception {
      if (DBHelper.pack != null) {
       return (List<E>) StaticDB.getBeanList(sql, bean, stat,prem, conn, true,
         parameters);
      } else {
       return (List<E>) StaticDB.getBeanList(sql, bean, stat,prem, conn, false,
         parameters);
      }
     }

     public int addBean(E bean) throws Exception {
      return StaticDB.addBean_static(bean);
     }

     public byte getByte(String sql) throws Exception {
      return (Byte) StaticDB.getObj(byte.class, sql,null);
     }

     public int getInt(String sql) throws Exception {
      return (Integer) StaticDB.getObj(int.class, sql,null);
     }

     public float getFloat(String sql) throws Exception {
      return (Float) StaticDB.getObj(float.class, sql,null);
     }

     public short getShort(String sql) throws Exception {
      return (Short) StaticDB.getObj(short.class, sql,null);
     }

     public double getDouble(String sql) throws Exception {
      return (Double) StaticDB.getObj(double.class, sql,null);
     }

     public String getString(String sql) throws Exception {
      return (String) StaticDB.getObj(String.class, sql,null);
     }

     public Date getDate(String sql) throws Exception {
      return (Date) StaticDB.getObj(Date.class, sql,null);
     }

     public Object getObject(String sql) throws Exception {
      return StaticDB.getObj(Object.class, sql,null);
     }

     public List<String> getStringList(String sql) throws Exception {
      return StaticDB.getStringList_static(sql, null);
     }

     public byte getByte(String sql, Object[] parameters) throws Exception {
      return (Byte) StaticDB.getObj(byte.class, sql, parameters);
     }

     public int getInt(String sql, Object[] parameters) throws Exception {
      return (Integer) StaticDB.getObj(int.class, sql, parameters);
     }

     public float getFloat(String sql, Object[] parameters) throws Exception {
      return (Float) StaticDB.getObj(float.class, sql, parameters);
     }

     public short getShort(String sql, Object[] parameters) throws Exception {
      return (Short) StaticDB.getObj(short.class, sql, parameters);
     }

     public double getDouble(String sql, Object[] parameters) throws Exception {
      return (Double) StaticDB.getObj(double.class, sql, parameters);
     }

     public String getString(String sql, Object[] parameters) throws Exception {
      return (String) StaticDB.getObj(String.class, sql, parameters);
     }

     public Date getDate(String sql, Object[] parameters) throws Exception {
      return (Date) StaticDB.getObj(Date.class, sql, parameters);
     }

     public Object getObject(String sql, Object[] parameters) throws Exception {
      return StaticDB.getObj(Object.class, sql, parameters);
     }

     public List<String> getStringList(String sql, Object[] parameters)
       throws Exception {
      return StaticDB.getStringList_static(sql, parameters);
     }

     public void close() throws Exception {
      StaticDB.close(stat, prem, conn, cst, null);
     }

    }


    package zhongheling.java.sql.dbhelper;

    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.sql.PreparedStatement;
    import java.sql.Connection;
    import java.sql.CallableStatement;
    import java.text.DateFormat;
    import java.util.Date;
    import java.util.List;

    import zhongheling.java.sql.basic.DBBasic;
    import zhongheling.java.sql.face.IDBHelperNoEx;
    import zhongheling.java.sql.manage.DBManageSuper;
    import zhongheling.java.sql.pack.ResultSetPack;

    public class DHHelperNoEx<E> extends DBBasic<E> implements IDBHelperNoEx<E> {

     private Statement stat = null;

     private PreparedStatement prem = null;

     private Connection conn = null;

     private CallableStatement cst = null;

     private DBBasic<E> StaticDB;

     protected static DateFormat dateFormat = DateFormat.getDateInstance();

     protected static ResultSetPack pack = null;//得到包装类对象

     public DHHelperNoEx(DBManageSuper manage) {
      StaticDB.setDBManage(manage);
     }

     public boolean execute(String sql) {

      boolean b = false;
      try {
       b = StaticDB.execute(conn, stat, sql);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_execute", e);
      }
      return b;
     }

     public ResultSet executeQuery(String sql) {
     
      ResultSet r = null;
      try {
       r = StaticDB.executeQuery(conn, stat, sql);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_executeQuery", e);
      }
      return r;
     }

     public int executeUpdate(String sql) {
     
      int i =0;
      try {
       i = StaticDB.executeUpdate(conn, stat, sql);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_executeUpdate", e);
      }
      return i;
     }

     public boolean prem_execute(String sql) {
     
      boolean b =false;
      try {
       b = StaticDB.prem_execute(prem, conn, sql,null);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_prem_execute", e);
      }
      return b;
     }

     public java.sql.ResultSet prem_executeQuery(String sql) {
     
      ResultSet r = null;
      try {
       r = StaticDB.prem_executeQuery(prem, conn, sql,null);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_prem_executeQuery", e);
      }
      return r;
     }

     public int prem_executeUpdate(String sql) {
     
      int i =0;
      try {
       i = StaticDB.prem_executeUpdate(prem, conn, sql,null);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_prem_executeUpdate", e);
      }
      return i;
     }
    public boolean prem_execute(String sql,Object[] parameters) {
     
      boolean b =false;
      try {
       b = StaticDB.prem_execute(prem, conn, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_prem_execute", e);
      }
      return b;
     }

     public java.sql.ResultSet prem_executeQuery(String sql,Object[] parameters) {
     
      ResultSet r = null;
      try {
       r = StaticDB.prem_executeQuery(prem, conn, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_prem_executeQuery", e);
      }
      return r;
     }

     public int prem_executeUpdate(String sql,Object[] parameters) {
     
      int i =0;
      try {
       i = StaticDB.prem_executeUpdate(prem, conn, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_prem_executeUpdate", e);
      }
      return i;
     }

     public void Process(String sql) {
     
      try {
       StaticDB.Process(conn, cst, sql);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_Process", e);
      }
     }
     public int addBean(E bean) {
     
      int i=0;
      try {
       i= StaticDB.addBean_static(bean);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(null, "DHHelperNoEx<E>_addBean", e);
      }
      return i;
     }
     @SuppressWarnings("unchecked")
     public E getBean(String sql, Class bean) {
     
      Object object=null;
      try {
       if (DBHelper.pack != null) {
        object= StaticDB.getBeanList(sql, bean,stat, prem, conn, true, null).get(0);
       } else {
        object= StaticDB.getBeanList(sql, bean,stat, prem, conn, false, null).get(0);
       }
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getBean", e);
      }
      return(E)object;
     }
     

     @SuppressWarnings("unchecked")
     public List<E> getBeanList(String sql, Class bean) {
     
      List<E> list=null;
      try {
       if (DBHelper.pack != null) {
        list= (List<E>) StaticDB.getBeanList(sql, bean,stat, prem, conn, true,null);
       } else {
        list= (List<E>) StaticDB.getBeanList(sql, bean, stat,prem, conn, false,null);
       }
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getBeanList", e);
      }
     
      return list;
     }

     @SuppressWarnings("unchecked")
     public List<E> getBeanList(String sql, Class bean, boolean IsPack) {
     
      List<E> list=null;
      try {
       list= (List<E>) StaticDB.getBeanList(sql, bean, stat,prem, conn, IsPack,null);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getBeanList", e);
      }
      return list;
     }

     public int updateBean(E bean) {
     
      int i=0;
      try {
       i= StaticDB.updateByWhere_static(bean, null, null);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(null, "DHHelperNoEx<E>_updateBean", e);
      }
      return i;
     }

     public int updateByWhere(E bean, String where) {
     
      int i=0;
      try {
       i= StaticDB.updateByWhere_static(bean, where,null);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(null, "DHHelperNoEx<E>_updateByWhere", e);
      }
      return i;
     }
     @SuppressWarnings("unchecked")
     public E getBean(String sql, Class bean,Object[] parameters) {
     
      Object object=null;
      try {
       if (DBHelper.pack != null) {
        object= StaticDB.getBeanList(sql, bean, stat,prem, conn, true,parameters).get(0);
       } else {
        object= StaticDB.getBeanList(sql, bean,stat, prem, conn, false,parameters).get(0);
       }
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getBean", e);
      }
      return(E)object;
     }

     @SuppressWarnings("unchecked")
     public List<E> getBeanList(String sql, Class bean,Object[] parameters) {
     
      List<E> list=null;
      try {
       if (DBHelper.pack != null) {
        list= (List<E>) StaticDB.getBeanList(sql, bean,stat, prem, conn, true,parameters);
       } else {
        list= (List<E>) StaticDB.getBeanList(sql, bean, stat,prem, conn, false,parameters);
       }
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getBeanList", e);
      }
     
      return list;
     }

     @SuppressWarnings("unchecked")
     public List<E> getBeanList(String sql, Class bean, boolean IsPack,Object[] parameters) {
     
      List<E> list=null;
      try {
       list= (List<E>) StaticDB.getBeanList(sql, bean,stat, prem, conn, IsPack,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getBeanList", e);
      }
      return list;
     }

     public int updateBean(E bean,Object[] parameters) {
     
      int i=0;
      try {
       i=StaticDB.updateByWhere_static(bean, null, parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(null, "DHHelperNoEx<E>_updateBean", e);
      }
      return i;
     }

     public int updateByWhere(E bean, String where,Object[] parameters) {
     
      int i=0;
      try {
       i= StaticDB.updateByWhere_static(bean, where,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(null, "DHHelperNoEx<E>_updateByWhere", e);
      }
      return i;
     }


     public byte getByte(String sql) {
      
       byte b=0;
       try {
        b= (Byte) StaticDB.getObj(byte.class, sql,null);
       } catch (Exception e) {
        this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getByte", e);
       }
       return b;
      }

      public int getInt(String sql) {
      
       int i=0;
       try {
        i= (Integer) StaticDB.getObj(int.class, sql,null);
       } catch (Exception e) {
        this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getInt", e);
       }
       return i;
      }

      public float getFloat(String sql) {
      
       float f=0;
       try {
        f= (Float) StaticDB.getObj(float.class, sql,null);
       } catch (Exception e) {
        this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getFloat", e);
       }
       return f;
      }

      public short getShort(String sql) {
      
       short s=0;
       try {
        s= (Short) StaticDB.getObj(short.class, sql,null);
       } catch (Exception e) {
       }
       return s;
      }

      public double getDouble(String sql) {
      
       double d=0;
       try {
        d= (Double) StaticDB.getObj(double.class, sql,null);
       } catch (Exception e) {
       }
       return d;
      }

      public String getString(String sql) {
      
       String s=null;
       try {
        s= (String) StaticDB.getObj(String.class, sql,null);
       } catch (Exception e) {
        this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getString", e);
       }
       return s;
      }

      public Date getDate(String sql) {
      
       Date d=null;
       try {
        d= (Date) StaticDB.getObj(Date.class, sql,null);
       } catch (Exception e) {
        this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getDate", e);
       }
       return d;
      }

      public Object getObject(String sql) {
      
      
       Object o=null;
       try {
        o= (Object) StaticDB.getObj(Object.class, sql,null);
       } catch (Exception e) {
        this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getObject", e);
       }
       return o;
      }

      public List<String> getStringList(String sql) {
      
       List<String> list=null;
       try {
        list= StaticDB.getStringList_static(sql,null);
       } catch (Exception e) {
        this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getStringList", e);
       }
       return list;
      }
     public byte getByte(String sql,Object[] parameters) {
     
      byte b=0;
      try {
       b= (Byte) StaticDB.getObj(byte.class, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getByte", e);
      }
      return b;
     }

     public int getInt(String sql,Object[] parameters) {
     
      int i=0;
      try {
       i= (Integer) StaticDB.getObj(int.class, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getInt", e);
      }
      return i;
     }

     public float getFloat(String sql,Object[] parameters) {
     
      float f=0;
      try {
       f= (Float) StaticDB.getObj(float.class, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getFloat", e);
      }
      return f;
     }

     public short getShort(String sql,Object[] parameters) {
     
      short s=0;
      try {
       s= (Short) StaticDB.getObj(short.class, sql,parameters);
      } catch (Exception e) {
      }
      return s;
     }

     public double getDouble(String sql,Object[] parameters) {
     
      double d=0;
      try {
       d= (Double) StaticDB.getObj(double.class, sql,parameters);
      } catch (Exception e) {
      }
      return d;
     }

     public String getString(String sql,Object[] parameters) {
     
      String s=null;
      try {
       s= (String) StaticDB.getObj(String.class, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getString", e);
      }
      return s;
     }

     public Date getDate(String sql,Object[] parameters) {
     
      Date d=null;
      try {
       d= (Date) StaticDB.getObj(Date.class, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getDate", e);
      }
      return d;
     }

     public Object getObject(String sql,Object[] parameters) {
     
     
      Object o=null;
      try {
       o= (Object) StaticDB.getObj(Object.class, sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getObject", e);
      }
      return o;
     }

     public List<String> getStringList(String sql,Object[] parameters) {
     
      List<String> list=null;
      try {
       list= StaticDB.getStringList_static(sql,parameters);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(sql, "DHHelperNoEx<E>_getStringList", e);
      }
      return list;
     }

     
     public void close() {
     
      try {
           StaticDB.close(stat, prem, conn, cst, null);
      } catch (Exception e) {
       this.getDBManage().printExceptionNoEx(null, "DHHelperNoEx<E>_close", e);
      }
     }

    }

    package zhongheling.java.sql.face;

    import java.sql.ResultSet;
    import java.util.Date;
    import java.util.List;

    public interface IDBHelper<E> {

     public abstract boolean execute(String sql) throws Exception;

     public abstract ResultSet executeQuery(String sql) throws Exception;

     public abstract int executeUpdate(String sql) throws Exception;

     public abstract boolean prem_execute(String sql) throws Exception;

     public abstract java.sql.ResultSet prem_executeQuery(String sql)
       throws Exception;

     public abstract int prem_executeUpdate(String sql) throws Exception;

     public abstract boolean prem_execute(String sql, Object[] objs)
       throws Exception;

     public abstract java.sql.ResultSet prem_executeQuery(String sql,
       Object[] objs) throws Exception;

     public abstract int prem_executeUpdate(String sql, Object[] objs)
       throws Exception;

     public abstract void Process(String sql) throws Exception;

     public abstract int addBean(E bean) throws Exception;

     public abstract E getBean(String sql, Class cla) throws Exception;

     public abstract List<E> getBeanList(String sql, Class cla) throws Exception;

     public abstract int updateBean(E bean) throws Exception;

     public abstract int updateByWhere(E bean, String where) throws Exception;

     public abstract E getBean(String sql, Class cla, Object[] objs)
       throws Exception;

     public abstract List<E> getBeanList(String sql, Class cla, Object[] objs)
       throws Exception;

     public abstract int updateBean(E bean, Object[] objs) throws Exception;

     public abstract int updateByWhere(E bean, String where, Object[] objs)
       throws Exception;

     public abstract byte getByte(String sql) throws Exception;

     public abstract int getInt(String sql) throws Exception;

     public abstract float getFloat(String sql) throws Exception;

     public abstract short getShort(String sql) throws Exception;

     public abstract double getDouble(String sql) throws Exception;

     public abstract String getString(String sql) throws Exception;

     public abstract Date getDate(String sql) throws Exception;

     public abstract Object getObject(String sql) throws Exception;

     public abstract List<String> getStringList(String sql) throws Exception;

     public abstract byte getByte(String sql, Object[] parameters) throws Exception;

     public abstract int getInt(String sql, Object[] parameters) throws Exception;

     public abstract float getFloat(String sql, Object[] parameters) throws Exception;

     public abstract short getShort(String sql, Object[] parameters) throws Exception;

     public abstract double getDouble(String sql, Object[] parameters)
       throws Exception;

     public abstract String getString(String sql, Object[] parameters)
       throws Exception;

     public abstract Date getDate(String sql, Object[] parameters) throws Exception;

     public abstract Object getObject(String sql, Object[] parameters)
       throws Exception;

     public abstract List<String> getStringList(String sql, Object[] parameters)
       throws Exception;

     public abstract void close() throws Exception;
    }


    package zhongheling.java.sql.face;
    import java.sql.ResultSet;
    import java.util.Date;
    import java.util.List;

    public interface IDBHelperNoEx<E> {

     public abstract boolean execute(String sql) ;

     public abstract ResultSet executeQuery(String sql) ;

     public abstract int executeUpdate(String sql) ;

     public abstract boolean prem_execute(String sql) ;

     public abstract java.sql.ResultSet prem_executeQuery(String sql);

     public abstract int prem_executeUpdate(String sql) ;

     public abstract boolean prem_execute(String sql, Object[] parameters);

     public abstract java.sql.ResultSet prem_executeQuery(String sql,
       Object[] parameters) ;

     public abstract int prem_executeUpdate(String sql, Object[] parameters);

     public abstract void Process(String sql) ;

     public abstract int addBean(E bean) ;

     public abstract E getBean(String sql, Class cla) ;

     public abstract List<E> getBeanList(String sql, Class cla) ;

     public abstract int updateBean(E bean) ;

     public abstract int updateByWhere(E bean, String where) ;

     public abstract E getBean(String sql, Class cla, Object[] parameters);

     public abstract List<E> getBeanList(String sql, Class cla, Object[] parameters);

     public abstract int updateBean(E bean, Object[] parameters) ;

     public abstract int updateByWhere(E bean, String where, Object[] parameters);

     public abstract byte getByte(String sql) ;

     public abstract int getInt(String sql) ;

     public abstract float getFloat(String sql) ;

     public abstract short getShort(String sql) ;

     public abstract double getDouble(String sql) ;

     public abstract String getString(String sql) ;

     public abstract Date getDate(String sql) ;

     public abstract Object getObject(String sql) ;

     public abstract List<String> getStringList(String sql) ;

     public abstract byte getByte(String sql, Object[] parameters) ;

     public abstract int getInt(String sql, Object[] parameters) ;

     public abstract float getFloat(String sql, Object[] parameters) ;

     public abstract short getShort(String sql, Object[] parameters) ;

     public abstract double getDouble(String sql, Object[] parameters);

     public abstract String getString(String sql, Object[] parameters);

     public abstract Date getDate(String sql, Object[] parameters) ;

     public abstract Object getObject(String sql, Object[] parameters);

     public abstract List<String> getStringList(String sql, Object[] parameters);

     public abstract void close() ;

    }


    package zhongheling.java.sql.manage;

    import java.sql.DriverManager;
    import java.text.DateFormat;
    import java.util.Date;

    import zhongheling.java.sql.face.IDBHelper;

    public class DBManage extends DBManageSuper {
     
     //时间格式属性
     protected static DateFormat dateFormat = DateFormat.getDateInstance();

     //得到连接
     public java.sql.Connection getConnection() throws Exception {
     
      return  getConnection_static();
     }
     //设置自动增长列字段
     public void getIdentity(Class bealClass,IDBHelper s)throws Exception
     {
      adpater.getIdentityName(bealClass);
     }
     
     //设置入库时时间格式
     public   String formatTime(Date date) throws Exception {
      return dateFormat.format(date);
     }

     //数据库访问过程中的异常处理,可以在这里打印日志等
     public   void printException(String sql, String message, Exception e)throws Exception {
      printException_Static(sql,message,e);
     }
     //数据库访问过程中的异常处理,可以在这里打印日志等
     public   void printExceptionNoEx(String sql, String message, Exception e) {
      printExceptionNoEx_Static(sql,message,e);
     }
     private static java.sql.Connection getConnection_static() throws Exception {
      // 数据库驱动
      //private final  String driver = "net.sourceforge.jtds.jdbc.Driver";
      //String driver = "net.sourceforge.jtds.jdbc.Driver";
      String driver = "oracle.jdbc.driver.OracleDriver";

      // 数据库地址以及数据源名称
      //private final String url = "jdbc:jtds:sqlserver://localhost:1433/newBBS";
      String url = "jdbc:oracle:thin:@10.38.202.37:1522:telf106";

      // 用户名
      String name = "yy0a";

      // 密码
      String password = "yy0a";

      java.sql.Connection conn = null;
      try {
       Class.forName(driver);
       conn = DriverManager.getConnection(url, name, password);
      } catch (Exception e) {
       System.out.println("连接数据库错误:" + e.getMessage());
       System.out.println(e.toString());
       throw e;
      }
      return conn;
     }
     
     private static String formatTime_Static(Date date) throws Exception {
      return dateFormat.format(date);
     }
     
     private static void printException_Static(String sql, String message, Exception e)throws Exception {
      System.out.println("SQL:"+sql);
      System.out.println("MESSAGE:"+message);
      System.out.println(e.toString());
      e.printStackTrace();
      throw e;
     }
     private static void printExceptionNoEx_Static(String sql, String message, Exception e){
     
      System.out.println("SQL:"+sql);
      System.out.println("MESSAGE:"+message);
      System.out.println(e.toString());
      e.printStackTrace();
     }

     
    }


    package zhongheling.java.sql.manage;
     
    import java.util.Date;
    import zhongheling.java.sql.adapter.DBAdapter;
    import zhongheling.java.sql.face.IDBHelper;
    import zhongheling.java.sql.pack.PreparedStatementPack;
    import zhongheling.java.sql.pack.ResultSetPack;

    public abstract class DBManageSuper {

     // 得到包装类对象,如果为空的话则不启用
     public static ResultSetPack rsPack = null;
     
     public static PreparedStatementPack psPack=new PreparedStatementPack();;
     //适配器
     public static DBAdapter adpater=null;
     
     //得到连接
     public abstract java.sql.Connection getConnection()throws Exception;
     
     //设置自动增长列
     public abstract void getIdentity(Class bealClass,IDBHelper db)throws Exception;

     //异常处理 并抛出
     public abstract   void printException(String sql, String message, Exception e)throws Exception;
     
     //异常处理 不抛出
     public abstract   void printExceptionNoEx(String sql, String message, Exception e);
     
     //入库时间格式设置
     public abstract   String formatTime(Date date) throws Exception ;
    }


    package zhongheling.java.sql.pack;

    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    public class PreparedStatementPack {
     
     private static  PreparedStatement prem;

     public void  setPreparedStatement(PreparedStatement prem)
     {
      PreparedStatementPack.prem=prem;
     }
     public static void  setBoolean(Integer index , Boolean value) throws SQLException {
     
        prem.setBoolean(index, value);
     }

     public static void setByte(Integer index , Byte value) throws Exception {

      prem.setByte(index, value);
     }

     public static void setShort(Integer index , Short value) throws Exception {

      prem.setShort(index, value);
     }

     public static void setInt(Integer index , Integer value) throws Exception {

      prem.setInt(index, value);
     }

     public static void setLong(Integer index , Long value) throws Exception {

      prem.setLong(index, value);
     }

     public static void setFloat(Integer index , Float value) throws Exception {

      prem.setFloat(index, value);

     }

     public static void setDouble(Integer index , Double value) throws Exception {

      prem.setDouble(index, value);

     }
     
     public static void setString(Integer index , String value) throws Exception {

      prem.setString(index.intValue(), value);

     }
     
     public static void setDate(Integer index , java.sql.Date value ) throws Exception {

      prem.setDate(index, value);

     }


    }


    package zhongheling.java.sql.pack;

    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Date;

    public class ResultSetPack  {

     private static ResultSet resultSet;
     
     public static Boolean getBoolean(String columnLabel) throws SQLException {

      return new Boolean(resultSet.getBoolean(columnLabel));
     }

     public static Byte getByte(String columnLabel) throws SQLException {

      return new Byte(resultSet.getByte(columnLabel));
     }

     public static Short getShort(String columnLabel) throws SQLException {

      return new Short(resultSet.getShort(columnLabel));
     }

     public static Integer getInt(String columnLabel) throws SQLException {

      return new Integer(resultSet.getInt(columnLabel));
     }

     public static Long getLong(String columnLabel) throws SQLException {

      return new Long(resultSet.getLong(columnLabel));
     }

     public static Float getFloat(String columnLabel) throws SQLException {

      return new Float(resultSet.getFloat(columnLabel));

     }

     public static Double getDouble(String columnLabel) throws SQLException {

      return new Double(resultSet.getDouble(columnLabel));

     }

     public static String getString(String columnLabel) throws SQLException {

      return resultSet.getString(columnLabel);

     }

     public static Date getDate(String columnLabel) throws SQLException {

      return resultSet.getDate(columnLabel);

     }

     public static Boolean getBoolean(int columnIndex) throws SQLException {

      return new Boolean(resultSet.getBoolean(columnIndex));

     }

     public static Byte getByte(int columnIndex) throws SQLException {

      return new Byte(resultSet.getByte(columnIndex));

     }

     public static Short getShort(int columnIndex) throws SQLException {

      return new Short(resultSet.getShort(columnIndex));

     }

     public static Integer getInt(int columnIndex) throws SQLException {

      return new Integer(resultSet.getInt(columnIndex));

     }

     public static Long getLong(int columnIndex) throws SQLException {

      return new Long(resultSet.getLong(columnIndex));

     }

     public static Float getFloat(int columnIndex) throws SQLException {

      return new Float(resultSet.getFloat(columnIndex));

     }

     public static Double getDouble(int columnIndex) throws SQLException {

      return new Double(resultSet.getDouble(columnIndex));

     }

     public static String getString(int columnIndex) throws SQLException {

      return resultSet.getString(columnIndex);
     }

     public static Date getDate(int columnIndex) throws SQLException {

      return resultSet.getDate(columnIndex);
     }

     public static void setResultSet(ResultSet rs) {

      resultSet = rs;
     }

    }


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qq454952101/archive/2011/04/29/6372802.aspx

  • 相关阅读:
    linux 换源
    Jedis使用
    mysql 安装
    ORACLE 11g安装
    网易有道云笔记去除左下角广告
    No module named 'urllib2'
    python+Eclipse+pydev环境搭建
    python-正则表达式基础
    [转]SpringMVC Controller介绍及常用注解
    【Android自学日记】搭建Android开发环境
  • 原文地址:https://www.cnblogs.com/heling/p/2033691.html
Copyright © 2020-2023  润新知