mafioso mafioso - 15 days ago 5
Java Question

Why doesn't getColumnType work for number type?

I want to get the types of my columns in java.

I do it that way:

ResultSetMetaData rsmd = rs.getMetaData();
int type = 0;

for (int i = 0; i < rsmd.getColumnCount(); i++) {
type = rsmd.getColumnType(i);

if (type == Types.VARCHAR) {
System.out.println("str");
} else if (type == Types.INTEGER){
System.out.println("int");
}

}


This code works for Strings but it doesn't work for the
number
type in sql.

Also in the list of types there isn't a number type?
How can I fix that problem?


EDIT


Types.NUMERIC
is the right answer

Answer

ResultSetMetaData column indexes are 1-based, not 0-based, Use a switch statement. The JDBC type returned for a column declared as INTEGER in SQL may vary depending on your RDBMS.

ResultSetMetaData rsmd = rs.getMetaData();
int type = 0;

for (int i = 1; i <= rsmd.getColumnCount(); i++) {
    type = rsmd.getColumnType(i);
    switch (type) {
        case Types.SMALLINT:
            break;
        case Types.INTEGER:
            break;
        case Types.BIGINT:
            break;
        case Types.DECIMAL:
            break;
        case Types.NUMERIC:
            break;
        case Types.FLOAT:
            break;
        case Types.DOUBLE:
            break;
        default:
    }
}