Como criar a conecção ODBC via codigo

1 resposta
F

Estou fazendo um aplicativo que teria que usar a odbc do windows, so que esse aplicativo ira rodar em muitas maquinas.Como eu conseguiria criar a conecção do meu aplicativo com um banco mdb sem ter que ficar configurando a odbc no windows?

1 Resposta

A

Cara, dá uma olhada nesse código abaixo. Usando ele, você consegue conectar num banco Access diretamente, sem ter que criar uma fonte ODBC na máquina. Para achar o banco, a classe só precisa estar no mesmo diretório dele.

// 23/09/2006
// classe genérica para implementar conexão a bancos de dados Access ou outros
// Para o Access, é utilizado um método de acesso direto que dispensa o registro de um DSN na
// fonte de dados ODBC do Windows.

//package EtiquetasProntuario;

import java.sql.*;

public class Conexao
{
	private String url;
	private String driver;
	private String usuario = null;
	private String senha = null;
	private Connection con = null;

	public Conexao( String u ) //método construtor específico para o Access. Dispensa usuário e senha
	{
		url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DriverID=22;READONLY=false;DBQ=";

		String caminho =  getClass().getResource( u ).toString(); //obtém URL correspondente à localização do arquivo
		caminho = caminho.replace("file:/",""); //remove sequência desnecessária
		caminho = caminho.replace("%20"," "); //remove sequência desnecessária
		url += caminho;
		driver = "sun.jdbc.odbc.JdbcOdbcDriver";
	}

	public Conexao( String u, String drv, String usu, String s )
	{
		url = u;
		driver = drv;
		usuario = usu;
		senha = s;
	}


	public boolean conecta()
	{
		boolean conectado = false;
                try
		{
			Class.forName( driver );
			con = DriverManager.getConnection( url, usuario, senha );
                        con.setAutoCommit(false);
                        conectado = true;
		}
		catch( java.lang.Exception ex )
		{
			ex.printStackTrace();
		}
                return conectado;
	}

	public void desconecta()
	{
		try
		{
			con.close();
		}
		catch( java.sql.SQLException sqle )
		{
			sqle.printStackTrace();
		}
	}

	public PreparedStatement submeteComando( String query )
	{
		conecta();
		PreparedStatement pstm = null;
		try
		{
			pstm = con.prepareStatement( query );
		}
		catch( java.sql.SQLException sqle )
		{
			sqle.printStackTrace();
		}
		return pstm;
	}

	public void comita(){
		try{
			 con.commit();
		}
		catch( SQLException sqle ){
			 sqle.printStackTrace();
		}
	}

}
Criado 13 de novembro de 2006
Ultima resposta 13 de nov. de 2006
Respostas 1
Participantes 2