public static String getValueClassName(StorageService storageService, DataSource ds, String sql) throws Exception {

        try {
            if ((sql != null) && !sql.trim().equals("")) {
                Connection con = null;
                try {
                    con = ConnectionUtil.createConnection(storageService, ds);
                    int index = sql.toLowerCase().indexOf("where");
                    int index2 = sql.indexOf("${");
                    String newSql = sql;
                    if ((index > 0) && (index2 > 0)) {                        
                        newSql = sql.substring(0, index) + " where 1 = 0";
                    }                    
                    QueryUtil qu = new QueryUtil(con, DialectUtil.getDialect(con));
                    List<NameType> list = qu.executeQueryForColumnNames(newSql);
                    //System.out.println("*** newType=" + list.get(0).getType());
                    return list.get(0).getType();
                } finally {
                    ConnectionUtil.closeConnection(con);
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            LOG.error(ex.getMessage(), ex);
            throw ex;
        }
        return null;
    }
public static String getValueClassName ( StorageService storageService , DataSource ds , String sql ) throws Exception { try { if ( ( sql != null ) && ! sql . trim ( ) . equals ( "" ) ) { Connection con = null ; try { con = ConnectionUtil . createConnection ( storageService , ds ) ; int index = sql . toLowerCase ( ) . indexOf ( "where" ) ; int index2 = sql . indexOf ( "${" ) ; String newSql = sql ; if ( ( index > 0 ) && ( index2 > 0 ) ) { newSql = sql . substring ( 0 , index ) + " where 1 = 0" ; } QueryUtil qu = new QueryUtil ( con , DialectUtil . getDialect ( con ) ) ; List < NameType > list = qu . executeQueryForColumnNames ( newSql ) ; return list . get ( 0 ) . getType ( ) ; } finally { ConnectionUtil . closeConnection ( con ) ; } } } catch ( Exception ex ) { ex . printStackTrace ( ) ; LOG . error ( ex . getMessage ( ) , ex ) ; throw ex ; } return null ; }
get value class name for the first column on a select sql query