jdbc: Get the SQL Type Name from java.sql.Type code
Question: I have an array with Field Names and jdbc Type codes. (Those int codes that
you can find in

<http://download.oracle.com/javase/1.4.2/docs/api/constant-
values.html#java.sql.Types.BIT>

I use a level 4 Driver.

I can't figure out how to ask the driver for the corresponding SQL (DDL) Type
names. It would be useful in jdbc and in native dialects.

I have  
(CustomerId, 1) (CustomerName, -8)

and I want

(customerId, INT) (customerId, VARCHAR(200))

Where can I find functions that help me with that? I am using jdbc in jython
via zxJDBC, so I can use all java and python DB API 2.0 functionality.


Answer: To specifically answer "Get the SQL Type Name from java.sql.Type code", if you
are using a version of java that can do reflection, here is a small utility
method that pretty much does the same thing:

    
    
    public Map<Integer, String> getAllJdbcTypeNames() {
    
        Map<Integer, String> result = new HashMap<Integer, String>();
    
        for (Field field : Types.class.getFields()) {
            result.put((Integer)field.get(null), field.getName());
        }
    
        return result;
    }
    

Add `import java.lang.reflect.Field;` to your import declarations. Once you
have that in place, simply use it as follows:

    
    
    ...
    Map<Integer, String> jdbcMappings = getAllJdbcTypeNames();
    
    String typeName = jdbcMappings.get(-5); // now that will return BIGINT
    ...
    

