Ae, pessoa, blz! Alguém sabe (ou já chegou a fazer algo semelhante) como eu consigo mandar para uma variável String um campo do banco de dados que está em formato BLOB?
Obrigado.
Ae, pessoa, blz! Alguém sabe (ou já chegou a fazer algo semelhante) como eu consigo mandar para uma variável String um campo do banco de dados que está em formato BLOB?
Obrigado.
Qual banco?
É o Oracle, e eu sei que tem o campo CLOB, mas no banco tá Blob, e eu preciso recuperar o conteúdo texto dele. Eu posso até tentar salvar num arquivo e depois ler o conteúdo deste arquivo.
Eu consegui resolver o meu problema:
Blob blob=viewTabela.getBlob("DECRETO");
BufferedReader in = new BufferedReader(new InputStreamReader(blob.getBinaryStream()));
String buf = in.readLine();
System.out.println("-->"+buf);
Mas o problema é o tamanho que a variável String pode ter? Se eu tenho um campo muito grande (mesmo tendo só texto), pode ser que a String pegue apenas um pedaço dela (e isso não pode ocorrer).
Então vem duas perguntas (a primeira bem básica e a segunda bem mais difícil):
qual o tamanho máximo (em bits ou caracteres) que uma variável String pode receber?
Seria melhor eu usar StringBuffer? Se for, como eu poderia converter o BufferedReader para o StringBuffer?
Olha, eu acho que nao tem limites.
O tipo String, não é um array de chars?
Otimize utilizando leitura de bytes e não BufferReader.
Para JVM 1.5 troque a utilização de StringBuffer por StringBuilder.
Blob blob=viewTabela.getBlob("DECRETO");
InputStream in = blob.getBinaryStream();
StringBuilder ret = new StringBuilder();
int lidos=0;
byte b = new b[2048];
String temp = null;
while ( (lidos=in.read(b)) != -1){
temp = new String(b,0,lidos);
ret.append(temp);
}
System.out.println("-->"+ret.toString());
hashcode , muito obrigado! O seu exemplo também resolveu o problema do meu de não ler várias linhas (o meu só pegava a primeira).
Só não entendi a classe StringBuilder. Eu não cheguei a localizar ela no Deitel para analisar. Mas vou pesquisar o tipo dela.
StringBuilder é mais rápida pois não utiliza de métodos synchronized para efetuar os appends.
4 anos depois e ainda me ajudou muito =D
hehe
Valeu!!