From 8c17e4e0fca4fdbb2683c5e2674728bb6574145c Mon Sep 17 00:00:00 2001 From: Dave Cramer Date: Fri, 22 Feb 2002 02:58:24 +0000 Subject: [PATCH] This patch fixes the exception thrown to inform the user the method getColumnClassName(int) is not implemented. This will futher fixes method ResultSet.getObject(int) since it requires the getColumnClassName(int) method to return the proper java class used to map the database column. auther Ed Yu --- .../postgresql/jdbc2/ResultSetMetaData.java | 62 ++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java index 7539a91c15..709fe1954b 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java @@ -473,8 +473,66 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData // This can hook into our PG_Object mechanism public String getColumnClassName(int column) throws SQLException { - throw org.postgresql.Driver.notImplemented(); - } + /* + The following data type mapping came from ../Field.java. + + "int2", + "int4","oid", + "int8", + "cash","money", + "numeric", + "float4", + "float8", + "bpchar","char","char2","char4","char8","char16", + "varchar","text","name","filename", + "bool", + "date", + "time", + "abstime","timestamp" + + Types.SMALLINT, + Types.INTEGER,Types.INTEGER, + Types.BIGINT, + Types.DOUBLE,Types.DOUBLE, + Types.NUMERIC, + Types.REAL, + Types.DOUBLE, + Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR, + Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR, + Types.BIT, + Types.DATE, + Types.TIME, + Types.TIMESTAMP,Types.TIMESTAMP + */ + int sql_type = getField(column).getSQLType(); + + switch (sql_type) + { + case Types.BIT: + return("java.lang.Boolean"); + case Types.SMALLINT: + return("java.lang.Integer"); + case Types.INTEGER: + return("java.lang.Integer"); + case Types.BIGINT: + return("java.lang.Long"); + case Types.NUMERIC: + return("java.math.BigDecimal"); + case Types.REAL: + return("java.lang.Float"); + case Types.DOUBLE: + return("java.lang.Double"); + case Types.CHAR: + case Types.VARCHAR: + return("java.lang.String"); + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + return("java.sql.Timestamp"); + default: + throw org.postgresql.Driver.notImplemented(); + } + } -- 2.40.0