oi estou trabalhando com o canco access e estou com um problema para desconectar
, se eu conecto e o desconecto ele não tem problema mas se eu uso o metodo consulta ele da problema
deve ser um problema nesse metodo o codigo vai abaixo
esta é minha classe para se conectar com o banco
/**
*Classe para se conectar com o banco
* @author Andrius Cichelero
*/
import java.sql.*;
public class Conexao {
private static Connection conexao = null;
/*
*Metodo que retorna a conexão,cria uma se hainda não houver
*
*@return Connection, a conexão
*/
public static Connection conecta(){
if(conexao!=null){return conexao;}
String usuario = " ";
String senha = " ";
String fonte = "jdbc:odbc:bar";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conexao = DriverManager.getConnection(fonte,usuario,senha);
conexao.setAutoCommit(false);
}
catch(SQLException ex){
System.err.print("SQLException: ");
System.err.println(ex.getMessage());
conexao = null;
}
catch(java.lang.ClassNotFoundException e){
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
return conexao;
}
/*
*Metodo que desconecta
*/
protected static void desconectar(){
try{
conexao.close();
}
catch(SQLException ex){
System.out.print("SQLException: ");
System.out.println(ex.getMessage());
}
}
}
public class BancoADao {
private static Connection conexao = Conexao.conecta();
protected void criaTabelaEstoque(){
try{
PreparedStatement comando = conexao.prepareStatement("CREATE TABLE Estoque(descricao varchar(20),quantidade varchar(3),valor varchar(10))");
comando.executeUpdate();
}
catch (SQLException ex){
System.out.print("SQLException: ");
System.out.println(ex.getMessage());
try{
conexao.rollback();
}
catch (SQLException ex1){
System.out.print("SQLException: ");
System.out.println(ex.getMessage());
}
}
}
protected static ArrayList<Produto> consulta() throws SQLException{
ArrayList<Produto> produtos = new ArrayList<Produto>();
PreparedStatement comando = conexao.prepareStatement("Select * from Estoque order by descricao");
ResultSet resultado = comando.executeQuery();
while(resultado.next()){
produtos.add(new Produto(resultado.getString("descricao"),Integer.parseInt(resultado.getString("quantidade")),new BigDecimal(resultado.getString("valor")),resultado.getDate("data")));
}
return produtos;
}
}
e esta é a execução
public class Test{
public static void main(String[] x){
Conexao.conecta();
BancoADao.consulta();
Conexao.desconecta();
}
}
e ele da o seguinte erro
SQLException: [Microsoft][Driver ODBC para Microsoft Access]Estado de transação inválido
alguem poderia me ajudar