Thread: JDBC types vs postgres types correspondation

JDBC types vs postgres types correspondation

From
"Marco Solinas"
Date:
Dear list,

We have a problem with the JDBC types. We need to find out the correspondation table between jdbc types and postgresql type.
What we're trying to do is to build a CREATE TABLE query where a column has to be of type "character varying", but we're not able to find the corresponding JDBC type.
Here you have the related part of out Java code:

*******************************************************************************************************************
    public String getTargetType (int jdbctype) throws SQLException {
        targettype.beforeFirst(); // targettype is the ResultSet obtained by DatabaseMetaData
        while (targettype.next()) {
            if (targettype.getInt ("DATA_TYPE") == jdbctype) {
                return targettype.getString("TYPE_NAME");
            }
        }
        return null;
    }

    public void creaTabellaCommesse () {
        String sql = "CREATE TABLE Commesse (";
       
        try {
            String dbChar = getTargetType(Types.VARCHAR);
            sql += "ID_Commessa " + getTargetType(Types.INTEGER) + " PRIMARY KEY, ";
            sql += "Prodotto " + dbChar + ", ";
            sql += "Finitura " + dbChar + ", ";
            sql += "DenominazioneUso " + dbChar + ", ";
            sql += "DestinazioneUso " + dbChar + ", ";
            sql += "PaeseDiDestinazione " + dbChar + ")";
           
            int n = st.executeUpdate(sql); //the Statement st is allocated elsewhere of my code
        }
        catch (SQLException ex) {
            eccezione (ex);
        }
    }
****************************************************************************************************************

The jdbc driver we downloaded is postgresql-8.3-603.jdbc4.jar; the postgresql server version we installed is 8.3.
Our code doesn't provide me any error, but the table columns are of type "name", which is too short in length to be effective in storing the most part of our program string.
Any idea of what we're missing?

Thanks a lot for your support.
Regards,
Marco and Rita.

Re: JDBC types vs postgres types correspondation

From
Kris Jurka
Date:

On Sat, 10 May 2008, Marco Solinas wrote:

> We have a problem with the JDBC types. We need to find out the
> correspondation table between jdbc types and postgresql type.
> What we're trying to do is to build a CREATE TABLE query where a column has
> to be of type "character varying", but we're not able to find the
> corresponding JDBC type.

You are getting hit by a bug in the JDBC driver.  The output of
DatabaseMetaData.getTypeInfo is supposed to be sorted by closest match to
DATA_TYPE, but it is not.  So you're just getting a random match for a
datatype that can represent text.

Kris Jurka