Hi All,
I am quite confused (PLEASE PLEASE Help), I cannot find anything on
the web). I read that you can declare a class that implements SQLData
(in this case I set up a class called Complex from the /src/tutorial
datatype that mimics the user-defined datatype in the db) and then set
the mapping appropriately (see below).
But it does not work ( I maybe doing something wrong)!!!
The "getObject" code throws:
Exception in thread "main" org.postgresql.util.PSQLException:
Unsupported Types value: 2,000
and the setObject code throws:
Exception in thread "main" java.lang.ClassCastException: java.lang.Class
(points to the getObject() line
ANY help would be much appreciated!
much thanks in advance.
-assad
Reference:
//Mapping type setup
java.util.Map map = db.getTypeMap();
if(map == null) map = new HashMap();
map.put("complex", Class.forName("Complex"));
db.setTypeMap(map);
map = db.getTypeMap();
and then I can set and get as follows:
//set info
Complex test = new Complex();
test.a = 5.6;
test.b = 3.4;
Statement stmt = db.createStatement();
PreparedStatement temp = db.prepareStatement("INSERT INTO
test_complex VALUES (DEFAULT, ?);");
temp.setObject(1,test);
temp.executeUpdate();
//I also tried with setObject with the type specified to
java.sql.TYPE_JavaObject
//get info
ResultSet rs = stmt.executeQuery("SELECT * FROM test_complex");
System.out.println("Got ");
while(rs.next()){
System.out.println("Got ");
ResultSetMetaData metaData = rs.getMetaData();
System.out.println("Type from SQL: " +
metaData.getColumnTypeName(2));
Object foo = (Object) rs.getObject(2, map);
if (foo instanceof Complex) {
Complex cp = (Complex)foo;
System.out.println("Got: " + cp + " from DB");