Saturday, May 10, 2008

[JDBC] JDBC types vs postgres types correspondation

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.

No comments: