Conectar una base de datos de Microsoft Access a Java usando JDBC y compilar
para un proyecto de base de datos escolar estamos haciendo un programa de base de datos (GUI de usuario y la base de datos). Usando Microsoft Access 2010, creé la base de datos y la rellené con algunos datos de muestra, la guardé en formato .mdb y la puse en mi carpeta de proyecto.
Cuando se ejecuta en eclipse, el siguiente código funciona bien, se conecta e incluso recupera la consulta. Sin embargo, encuentro que no puedo exportar el código a un jar y ejecutarlo (lo cual es necesario para el proyecto, darles una copia de trabajo de su programa en un CD o unidad flash), y tampoco puedo portar el codificar a Netbeans para que funcione, así como intentar compilar en una máquina Linux.
Supongo que este es un problema al incluir controladores o al intentar usar el acceso de Microsoft. El error que obtengo al ejecutar el jar o al ejecutar Netbeans aparece debajo del código. Entonces, pregunto, ¿cómo incluyo los controladores para que el programa sea portátil o de qué otra manera puedo abordar este problema?
Gracias por adelantado
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);
}
}
El error mencionado anteriormente:
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)