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?
Como criar a conecção ODBC via codigo
F
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