Erro ao inserir Arquivo no Postgre. Help!

4 respostas
Thiago_Francisco

Bom dia,
Alguém sabe que exception é essa : java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to org.postgresql.PGConnection

Ela ocorre quando faço um cast do meu obj de conexão para org.postgresql.PGConnection

LargeObjectManager lobj = ((org.postgresql.PGConnection)con).getLargeObjectAPI();
try
	                {    
	                	    Connection con=getConnection(dataSourceName);	                	   
	                        con.setAutoCommit(false);
	                        LargeObjectManager lobj = ((org.postgresql.PGConnection)con).getLargeObjectAPI();
	                        int n = LargeObjectManager.READ - LargeObjectManager.WRITE;
	                        int oid = lobj.create(n);
	                        LargeObject obj = lobj.open(oid, LargeObjectManager.WRITE);
	                        java.io.File file = new java.io.File(frmMci.getPathFileCube());
	                        FileInputStream fis = new FileInputStream(file);
	                        byte buf[] = new byte[2048];                        
	                        
	                        int s, tl = 0;
	                        while ((s = fis.read(buf, 0, 2048)) > 0) {
	                        	obj.write(buf, 0, s);
	                        	tl += s;
	                        	}
	                        	obj.close();
	                        	PreparedStatement ps = con.prepareStatement("UPDATE \""+schemaname+"\".dw_titulo  SET im_cubo_nome =?, im_cubo=? WHERE id_dw_titulo=?");
	                        	ps.setString(1, file.getName());
	                        	ps.setInt(2, oid);
	                        	ps.executeUpdate();
	                        	ps.close();
	                        	fis.close();
	                        	con.commit();


	                }
	                catch (Exception e)
	                {
	                        e.printStackTrace();
	                }

Alguém sabe como resolver esse problema?

4 Respostas

Thiago_Francisco

?

M

ClassCastException ocorre quando o cast não é valido por exemplo

Long x = new Long();

Carro carro = (Carro)x;

Isso deve dar uma esta exception por que X não é um Carro.

provavelmente o retorno não é org.postgresql.PGConnection

Att.

Thiago_Francisco

Eita.Mas isso eu sei poh… rsr. Isso é o básico do básico que um programador tem que saber. rsrs brincadeira heim.

Bom mas acho que não fui muito claro.
O problema é o seguinte o cast está correto, pois esse é um exemplo de como inserir arquivos grandes no postgre usando o tipo de dado OID.
Todos os exemplos de como inserir arquivo grande no postgre utilizam esse cast

LargeObjectManager lobj = ((org.postgresql.PGConnection)con).getLargeObjectAPI();

O problema é que está dando pau e provavelmente não é por causa do cast estar inválido, acredito que pode ser algo como configuração no banco postgre ou o driver está desatualizado. Bom, mas valeu. Se alguém souber exatamente o porque de não poder converter postem ae…
:?:

ataufo

Estou com o mesmo erro. Conseguiu corrigir?

Alguem sabe ?

Criado 13 de maio de 2009
Ultima resposta 13 de nov. de 2010
Respostas 4
Participantes 3