Eae galera, estou com um problema ao ler arquivos DBF.
O erro é inconstante na hora que estou fazendo a consulta quando ele vai executar o resultSet, a JVM dispara um erro. As vezes faço a consulta com mais de 100 registros, de repente realizo a consulta que retorna apenas um registro e é exibido essa janela.
Se aperto o botão repetir no console é exibido essa mensagem:
A fatal error has been detected by the Java Runtime Environment:
Internal Error (os_windows_x86.cpp:149), pid=7856, tid=7708
guarantee(result == EXCEPTION_CONTINUE_EXECUTION) failed: Unexpected result from topLevelExceptionFilter
JRE version: 7.0_09-b05
Java VM: Java HotSpot™ 64-Bit Server VM (23.5-b02 mixed mode windows-amd64 compressed oops)
Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
An error report file with more information is saved as:
D:\Inovar\jboss-as-7.1.1.Final\jboss-as-7.1.1.Final\bin\hs_err_pid7856.log
If you would like to submit a bug report, please visit:
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.
Se aperto o Ignorar ele dispara esse erro:
16:00:34,076 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Oops-> java.sql.SQLException: [Microsoft][Driver ODBC dBASE] Recurso do sistema excedido.
Segue o codigo da consulta
public Acessorio importarAcessorioByCodigo(String codigo){
try {
Acessorio acessorio = new Acessorio();
//Registrar o Driver JDBC do banco de dados, neste caso estou usando o DBF
String conexao = "sun.jdbc.odbc.JdbcOdbcDriver";
//Carrega o Driver a ser utilizado
Class.forName(conexao).newInstance();
//Indica o caminho do arquivo
//String caminho = "C:\\Users\\Claeber\\Desktop\\Banco Engevidros"; //eX.: C:\J2SDK1.4.1\BIN\
// String de conexao para o DBF
String url = "jdbc:odbc:BD_ENG";
//Faz um SELECT no arquivo
String sql = "SELECT * FROM Aces where CODIGO = '"+codigo+"' ";
//OBS.: Não coloque a extensão do arquivo, deixe sem .DBF
//Abre uma conexão com o arquivo
Connection conn = DriverManager.getConnection(url);
// recuperar a classe Stamtemant a partir da conexao criada
Statement stmt = conn.createStatement();
//Retorna o resultado da Query
ResultSet rs = stmt.executeQuery(sql);
//Pegar o valor da(s) coluna(a) já no tipo desejado String, int, Date, etc...
while (rs.next()) {
acessorio.setCodigo(rs.getString("CODIGO"));
acessorio.setDescricao(rs.getString("DESCRICAO"));
acessorio.setPreco(rs.getDouble("PRECO"));
acessorio.setUndTexto(rs.getString("UNID"));
acessorio.setCorTexto(rs.getString("TRAT_COR"));
acessorio.setLinhaTexto(rs.getString("LINHA"));
if(acessorio.getCorTexto() == null || acessorio.getCorTexto().isEmpty())
acessorio.setCorTexto("SEM ACABAMENTO");
if(acessorio.getUndTexto() == null || acessorio.getUndTexto().isEmpty())
acessorio.setUndTexto("SEM UND");
if(acessorio.getLinhaTexto() == null || acessorio.getLinhaTexto().isEmpty())
acessorio.setLinhaTexto("SEM LINHA");
}
rs.close();
stmt.close();
conn.close();
return acessorio;
} catch (Exception e) {
System.out.println("Oops-> " + e);
return null;
}
}
Alguem poderia me ajudar, estou dependo dessa leitura para fechar contrato empresarial.
