Conectando um banco de dados do Microsoft Access ao Java usando JDBC e compilando
para um projeto de banco de dados da escola, estamos criando um programa de banco de dados (GUI do usuário e banco de dados). Usando o Microsoft Access 2010, criei o banco de dados e o preenchi com alguns dados de exemplo, salvei-o no formato .mdb e coloquei-o na minha pasta do projeto.
Ao executá-lo no eclipse, o código a seguir funciona bem, conecta e até recupera a consulta. No entanto, acho que não consigo exportar o código para um jar e executá-lo (o que é necessário para o projeto, forneça uma cópia de trabalho do seu programa em um CD ou unidade flash) e também não consigo portar o código. código para o Netbeans para que funcione, além de tentar compilar em uma máquina Linux.
Suponho que este seja um problema ao incluir drivers ou tentar usar o acesso da Microsoft. O erro que recebo ao executar o jar ou ao Netbeans é fornecido abaixo do código. Então, pergunto: como incluo drivers para tornar o programa portátil, ou de que outra forma posso abordar esse problema?
desde já, obrigado
import java.sql.*;
public class JDBCTest {
static Connection connection;
static Statement statement;
public static void main(String args[]){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=TLDATABASEDBM.mdb";
connection = DriverManager.getConnection( database ,"","");
buildStatement();
executeQuery();
}catch(Exception e){
e.printStackTrace();
System.out.println("Error!");
}
}
public static void buildStatement() throws SQLException {
statement = connection.createStatement();
}
public static void executeQuery() throws SQLException {
boolean foundResults = statement.execute("SELECT * FROM tblStaff AS x WHERE City='Calgary'");
if(foundResults){
ResultSet set = statement.getResultSet();
if(set!=null) displayResults(set);
}else {
connection.close();
}
}
public static void displayResults(ResultSet rs) throws SQLException {
ResultSetMetaData metaData = rs.getMetaData();
int columns=metaData.getColumnCount();
String text="";
while(rs.next()){
for(int i=1;i<=columns;++i) {
text+=""+metaData.getColumnName(i)+":\t";
text+=rs.getString(i);
//text+="</"+metaData.getColumnName(i)+">";
text+="\n";
}
text+="\n";
}
System.out.println(text);
}
}
O erro mencionado acima:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:207) at tldatabase.DataConnect.makeConnection(DataConnect.java:35) at tldatabase.Main.main(Main.java:24)