public void Delete(DBObject Record) throws Exception {
    String SQL = SQLToolBox.BuildSQL(Record, QueryType.Delete);

    try {
      MysqlDataSource dataSource = new MysqlDataSource();
      dataSource.setUser(_user);
      dataSource.setPassword(_pass);
      dataSource.setServerName(_server);
      dataSource.setDatabaseName(_dbName);
      Connection conn = dataSource.getConnection();

      Statement stmt = conn.createStatement();
      stmt.executeUpdate(SQL);

      stmt.close();
      conn.close();
    } catch (Exception e) {
      throw e;
    } finally {
    }
  }
  public <T extends DBObject> List<T> Select(Class<T> clazz) throws Exception {

    String SQL = SQLToolBox.BuildSQL(clazz.newInstance(), QueryType.Select);

    ArrayList<T> retList = new ArrayList<T>();

    try {
      MysqlDataSource dataSource = new MysqlDataSource();
      dataSource.setUser(_user);
      dataSource.setPassword(_pass);
      dataSource.setServerName(_server);
      dataSource.setDatabaseName(_dbName);
      Connection conn = dataSource.getConnection();

      Statement stmt = conn.createStatement();
      ResultSet rSet = stmt.executeQuery(SQL);

      while (rSet.next()) {

        T addObject = clazz.newInstance();
        for (Field f : addObject.getClass().getFields()) {
          switch (f.getType().getName()) {
            case ("int"):
              {
                f.set(addObject, rSet.getInt(f.getName()));
                break;
              }
            case ("double"):
              {
                f.set(addObject, rSet.getDouble(f.getName()));
                break;
              }
            case ("java.lang.Float"):
              {
                f.set(addObject, rSet.getFloat(f.getName()));
                break;
              }

            case ("java.lang.String"):
              {
                f.set(addObject, rSet.getString(f.getName()));
                break;
              }
            case ("java.util.Date"):
              {
                f.set(addObject, rSet.getDate(f.getName()));
                break;
              }
            case ("java.lang.Boolean"):
              {
                f.set(addObject, rSet.getBoolean(f.getName()));
                break;
              }
            case ("java.util.UUID"):
              {
                f.set(addObject, UUID.fromString(rSet.getString(f.getName())));
                break;
              }
            case ("java.lang.Long"):
              {
                f.set(addObject, rSet.getLong(f.getName()));
                break;
              }
            case ("java.lang.Byte"):
              {
                f.set(addObject, rSet.getByte(f.getName()));
                break;
              }
            case ("java.lang.Short"):
              {
                f.set(addObject, rSet.getShort(f.getName()));
                break;
              }
            case ("byte[]"):
              {
                f.set(addObject, rSet.getBytes(f.getName()));
                break;
              }
            default:
              f.set(addObject, rSet.getObject(f.getName()));
          }
        }

        retList.add(addObject);
      }

      rSet.close();
      stmt.close();
      conn.close();

    } catch (Exception e) {
      throw e;
    }

    return retList;
  }