Servlet X Oracle com campo CLOB

Olá pessoal.
É o seguinte, estou usando Servlet para pesquisar uma tabela Oracle onde o campo é um CLOB, estou usando um condigo, que achei na internet para consultar e retomar o campo CLOB:

Estou tendo que usar essas linhas abaixos, após o executeQuery, para poder resgatar o texto do campo CLOB

       java.io.InputStream ip = and.getAsciiStream("andamento");
        int c = ip.read();  while (c &gt 0) {char caracter = ((char)c); andamento += caracter;  c = ip.read();}

Até ai tudo bem. O problema é que dessa forma os novos paragrafos (Enter) ou carro CHR(13) não está pegando, ou seja, o texto apos passar pelo getAsciiStream fica tudo junto, ingnorando todos os Enter´s

Já tentei fazer o seguinte:

		char aChar1  = (char) 10;  
		char aChar2  = (char) 13;  

		String enter = ""+aChar1+aChar2 ; 
		
		andamento = andamento.replace(enter, &quot;<br>");

Mas não deu certo !! nem mesmo tirando o (char) 10;

Alguem que usa Oracle com campo CLOB saberia dar uma dica como resolver essas quebras de linhas (Enter)

// Codigo completo da parte montagem da pesquisa

Statement stm = ConexaoOra.stm;

String tabela = null;

tabela = "&lt;table border=1 width=100% bgcolor=#C0C0C0 bordercolor=#808080 height=65&gt;";
tabela += "&lt;tr&gt;";
tabela += "&lt;td bgcolor=#D1DBE4 valign=top align=justify&gt;";
tabela += "&lt;table border=1 width=100% bordercolor=#808080&gt;&quot;;



String SQL = &quot;select * from andamentos where proc_principal = '&quot;+recebeProcesso+&quot;' order by data desc&quot; ;
Statement stmAnd = ConexaoOra.stm;
try{		
	ResultSet and = stmAnd.executeQuery(SQL); 

    while (and.next()) {
    	checar = 1;
    	andamento = &quot;&quot;;
    	idRegistro =  and.getString(&quot;id_reg&quot;);
    	hora =  and.getString(&quot;hora&quot;);
    	responsavel =  and.getString(&quot;usuario&quot;);
    	dataAnd =  format.convertDate(and.getDate(&quot;data&quot;), &quot;dd/MM/yyyy&quot;);
        java.io.InputStream ip = and.getAsciiStream(&quot;andamento&quot;);
        int c = ip.read();  while (c &gt 0) {char caracter = ((char)c); andamento += caracter;  c = ip.read();}
        
        
        
        tabela += &quot;&lt;tr&gt;&lt;td width=100% align=justify&gt;<a >";
        tabela += "<p><b><font size=1 face=Arial><font color=#800080>&lt;span style=background-color: #D1DBE4&gt;&nbsp; DATA:&nbsp;"+dataAnd+"&nbsp;&lt;/span&gt;";
        tabela += "</font>&nbsp; <font color=#008080>&lt;span style=background-color: #D1DBE4&gt;&nbsp; HORA:&nbsp;"+hora+"&nbsp;&lt;/span&gt;</font>&nbsp; ";
        tabela += "<font color=#0000FF> &lt;span style=background-color: #D1DBE4&gt;&nbsp; RESPONSÁVEL:&nbsp;"+responsavel+"&lt;/span&gt;</font></font></b></p> </a></font>";
        tabela += "</b>&lt;/span&gt;&lt;META content=MSHTML 6.00.3790.1830 name=GENERATOR&gt;<font face=Arial size=2 color=#000000>";
        tabela += "<P  0px; MARGIN-BOTTOM: 0px>"+andamento+"</font>&lt;/td&gt;&lt;tr&gt;&lt;/tr&gt;";
        
    
    }
	
    

} catch (SQLException e) {	response.getWriter().write("Mensagem do sistema: "+e.getMessage());	}

tabela += "&lt;/table&gt; ";
tabela += "&lt;/td&gt; ";
tabela += "&lt;/tr&gt; ";
tabela += "&lt;/table&gt; ";

Oi carlosgeiser;

Cara, tente colocar tags code quando for postar código ok, senão dificulta muito a leitura?

Blza…

Mesmo em campos CLOB em java tu consegue fazer o rs.getString(“campo”).

Logo com isso não terá problemas com as tuas quebras de linha.

OK??

Até mais…

já tentei rs.getString(“campo”)

isso esta nao funcionando aqui com clob, invez de aparecercer o conteudo do texto armazenado no clob, aparece uma arroba com uma seguencia de um numero cumprido.

Tente esse:

rs.getClob("colName")

Pode fazer assim…

Clob c = rs.getClob("campo");
String valor = c.getSubString(1, new Long(c.length()).intValue());;

Até…

[quote=Pedrosa]Tente esse:

rs.getClob("colName") [/quote]

Pedrosa,
desse jeito que voce está sugerindo o resultado é algo como: oracle.sql.CLOB@19d4f72
ou seja, em vez de retornar o texto do campo CLOB aparece essa sequencia de numero

[quote=nbluis]Pode fazer assim…

Clob c = rs.getClob("campo");
String valor = c.getSubString(1, new Long(c.length()).intValue());;

Até…[/quote]

nbluis,
tentei essa sua sugestão, mas mesmo assim NÃO está quebrando a linha com Enter, ou seja, o texto aparece todo amuntuado.

Cara, não pode…

faz um for no array de chars e vê se realmente tem um char(10) e um char(13) ai no meio…

bah que estranho…

nbluis,
desculpe ai, mas eu estou a pouco tempo mexendo com Java, não sei exatamente como fazer esse for no array. Se não for abusar poderia me dar um exemplo como fazer ?
Mas adianto que tenho certeza que existe quebra de paragrafo no texto pois trata-se de um texto cadastrado em uma aplicação desktop.

Tranquilo.
Talvez não resolva o seu problema, mas vale de aprendizado.

String s = "teste \n\r";
char[] ch = s.toCharArray();
for (char c : ch) {
  if (((int) c) == 10) System.out.println("Aqui tem um 10");
  if (((int) c) == 13) System.out.println("Aqui tem um 13");
}

Olá nbluis,

creio que vai ajudar sim, testei aqui, está testando se no tem ou não chr(10) e/ou chr(13)

Agora só fiquei na duvida como subistuir chr(10) e/ou chr(13) por
para poder quebrar o paragrafo.

Como por exemplo algo parecido como isso:

Clob c = and.getClob(“andamento”);
String valorAndamento = c.getSubString(1, new Long(c.length()).intValue());;

valorAndamento = valorAndamento.replace(chr(10), “
”);

Para pegar o o caracter 13 ou dez basta fazer assim.

char c = (char) 13;
char c2 = (char) 10;

Até mais…

Olá nbluis ,
tentei o codigo abaixo, mas está dando erro no replace, ou seja, o mesmo fica sublinhado em vermelho. Estou concluindo que o replace não está aceitando o caracter especial " (char) 10 "
Alguma sugestão ?

char Char1  = (char) 10;  
valorAndamento = valorAndamento.replace(Char1, "<br>");

Sim, pois o metodo replace recebe como parametro apenas um char como target e outro como replacement.

neste caso em especial tu podes fazer assim

char Char1  = (char) 10; 
valorAndamento = valorAndamento.replaceAll(Char1 + "", "&lt;br&gt;");

Até…