Bom dia.
Preciso fazer o seguinte:
Ler de uma base no SQL Server alguns registros, que possuem arquivos de vários formatos (xls, doc, jpg, etc) gravados (Tipo Blob).
E pegar estes arquivos lidos e gravar em outra base SQL Server.
Encontrei alguns tutoriais, mas não consegui fazer nenhum funcionar.
Alguém sabe como?
Obrigada!
Segue abaixo o código que estou tentando usar.
package br.com.vp.bo;
import java.sql.*;
import java.io.*;
import javax.naming.NamingException;
import br.com.vp.DAO.ConexaoSQL;
import br.com.vp.vo.PrcAnx;
public class BlobInsert
{
public static void main(String[] args) throws SQLException, NamingException, IOException
{
InputStream fileBase = null;
PrcAnx prcAnx = new PrcAnx();
try
{
byte[] buffer = new byte[32*1024]; // Buffer 32 kb
Connection conn = ConexaoSQL.obtemConexaoSQL();
System.out.println("Connection Ok!");
PreparedStatement ps = conn.prepareStatement("select * from PrcAnx where PrcIdt = 355");
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
System.out.println("ID not found!");
return;
}
String fileName = "Arquivo";
fileBase = rs.getBinaryStream("AnxCnt");
prcAnx.setPrcIdt(rs.getInt("PrcIdt"));
prcAnx.setAnxSeq(rs.getInt("AnxSeq"));
prcAnx.setAnxDsc(rs.getString("AnxDsc"));
prcAnx.setAnxCntExt(rs.getString("AnxCntExt"));
prcAnx.setAnxCntNom(rs.getString("AnxCntNom"));
prcAnx.setAnxFulPat(rs.getString("AnxFulPat"));
prcAnx.setAnxDscMem(rs.getString("AnxDscMem"));
prcAnx.setAnxDttInc(rs.getString("AnxDttInc"));
prcAnx.setAnxCodUsuCad(rs.getString("AnxCodUsuCad"));
System.out.println("DEPOIS DE SETAR CAMPOS");
System.out.println("prcIdt.......: " + prcAnx.getPrcIdt());
System.out.println("anxSeq.......: " + prcAnx.getAnxSeq());
System.out.println("anxDsc.......: " + prcAnx.getAnxDsc());
System.out.println("anxCntExt....: " + prcAnx.getAnxCntExt());
System.out.println("anxCntNom....: " + prcAnx.getAnxCntNom());
System.out.println("anxFulPat....: " + prcAnx.getAnxFulPat());
System.out.println("anxDscMem....: " + prcAnx.getAnxDscMem());
System.out.println("anxDttInc....: " + prcAnx.getAnxDttInc());
System.out.println("anxCodUsuCad.: " + prcAnx.getAnxCodUsuCad());
OutputStream fileOut = new FileOutputStream(fileName + "." + prcAnx.getAnxCntExt());
int bytesLidos = fileBase.read(buffer);
while (bytesLidos > 0)
{
fileOut.write(buffer, 0, bytesLidos);
bytesLidos = fileBase.read(buffer);
}
System.out.println("File extracted!");
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
try
{
File fileDesc = new File(prcAnx.getAnxCntNom());
InputStream file = fileBase;
System.out.println("prcIdt.......: " + prcAnx.getPrcIdt());
System.out.println("anxSeq.......: " + prcAnx.getAnxSeq());
System.out.println("anxDsc.......: " + prcAnx.getAnxDsc());
System.out.println("anxCntExt....: " + prcAnx.getAnxCntExt());
System.out.println("anxCntNom....: " + prcAnx.getAnxCntNom());
System.out.println("anxFulPat....: " + prcAnx.getAnxFulPat());
System.out.println("anxDscMem....: " + prcAnx.getAnxDscMem());
System.out.println("anxDttInc....: " + prcAnx.getAnxDttInc());
System.out.println("anxCodUsuCad.: " + prcAnx.getAnxCodUsuCad());
Connection conn = ConexaoSQL.obtemConexaoSQL();
PreparedStatement ps = conn.prepareStatement("insert into PrcAnx2 (PrcIdt, AnxSeq, AnxDsc, AnxCnt, AnxCntExt, AnxCntNom, AnxFulPat, AnxDscMem, AnxDttInc, AnxCodUsuCad, msrepl_tran_version) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NEWID())");
ps.setInt(1, prcAnx.getPrcIdt());
ps.setInt(2, prcAnx.getAnxSeq());
ps.setString(3, prcAnx.getAnxDsc());
ps.setBinaryStream(4, file, (int) fileDesc.length());
ps.setString(5, prcAnx.getAnxCntExt());
ps.setString(6, prcAnx.getAnxCntNom());
ps.setString(7, prcAnx.getAnxFulPat());
ps.setString(8, prcAnx.getAnxDscMem());
ps.setString(9, prcAnx.getAnxDttInc());
ps.setString(10, prcAnx.getAnxCodUsuCad());
ps.executeUpdate();
System.out.println("File saved!");
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
}