Estou mexendo um leitor de digitais da Digital Persona.
Ele vem com umas bibliotecas junto.
Estou com problema na hora de gravar no banco de dados o template e principalmente para recuperar.
Creio que para gravar foi certinho, pois utilizei o comando:
template.serialize()
Este comando é da biblioteca e ele retorno um array de bytes[] que eu salvo em um campo blob.
Agora para recuperar eu estou tentando utilizar o deserialize() mas não da certo. O comando deserialize() não retorna nada e pede um array de bytes como parametro.
Eu tentei fazer isso
Porém da o erro de nullException. Eu não sei se só fazendo do byte[] digital = rs.getBytes(“digital”); está retornando um array corretamente. Alguem já mexeu com isso, sabe como fazer para converter para template de novo?
É, fiz uns testes aqui e já constatei que o comando
byte[]digital=rs.getBytes("digital");
não retorna o array de byte.
Na hora de gravar eu usei o comando o serialize() e sempre ele me da um array de bytes de 1632 posições. Quando utilizo o byte[] digital = rs.getBytes(“digital”); o array digital está apenas com 10 posições.
Como faço para recuperar o Array? Creio que se eu conseguir recuperar ele de volta com 1632 posições o deserialize() vai funcionar já que ele está dando nullpointer.
Edit ->
Fiz os testes aqui, e realmente funciona o deserialize() se o array de bytes estiver completo. Então minha dúvida é: Como recuperar o array de bytes que está salvo no campo blob?
A
Aleksandro
Cara , não sei se entendi …mais se o seu campo esta gravado no banco de dados …faça assim :
rs.getClob("digital");Stringsql="SELECT digital FROM TESTE";try{PreparedStatementps=conexao.prepareStatement(sql);ResultSetrs=ps.executeQuery();while(rs.next()){Clobclob=rs.getClob("digital");BufferedReaderreader=newBufferedReader(clob.getCharacterStream());StringBufferstrBuf=newStringBuffer();Stringlinha=null;while((linha=reader.readLine())!=null){strBuf.append(linha);//Character.LINE_SEPARATOR insere a quebra de linhastrBuf.append((char)Character.LINE_SEPARATOR);}System.out.println("=========== CLOB ===========");System.out.println(strBuf.toString());}rs.close();ps.close();}catch(Exceptione){e.printStackTrace();}
Veja se te ajuda …
D
denisbenjamim
Boa Tarde, alguem conseguiu resolver ?
E
entanglement
Normalmente você não puxa os bytes de um Blob usando getBytes diretamente e sim algo como getBlob().getBytes() - cada driver de banco tem sua forma diferente de resolver o problema.
Veja que o JDBC não consegue esconder completamente a diferença entre os diversos bancos de dados.