Professional Documents
Culture Documents
*Nota 01: Si no logras cambiar el nombre de la BD a tu preferencia, hazlo ubicando el archivo origen. *Nota 02: Observa que la extensin de la BD es ".accdb" (esto en versiones superiores desde M. Access 2007), cosa que en versiones inferiores al 2007 es ".mdb". *Nota 03: Guarda la BD en la direccin por defecto que Access tiene asignado en el sistema
("C:\Users\"tu_usuario"\Documents" en Windows7), puesto que esta publicacin ser para Conexiones indirectas o estticas.
Ya tenemos la base de datos! Bueno ahora vamos a configurar el servicio como en los otros casos (Derby), vamos al panel de control: Buscamos "ODBC"
Ahora estamos en la pestaa "DSN Usuario" y escogemos tal como se muestra en la siguiente imagen:
A nuestro DSN (Data Source Name) lo llamaremos "ADB", luego ubicaremos el archivo de la BD, tal como se muestra en la imagen:
*Nota: Aunque por razones que estn en proceso de investigacin la contrasea que se pone aqu no se activa (por decirlo de otra forma, osea pongamos o no contrasea da lo mismo). Veremos ms adelante cmo ponerle una contrasea a nuestra BD!!
Ahora veamos el cdigo fuente del proyecto: Recibir el nombre y la estructura de carpetas que se muestra a continuacin:
Veamos la clase Conexion que vari ligeramente: Como en este caso no hemos utilizando un driver como en casos anteriores; trabajamos conClass.forName(" "). Se preguntarn qu hace esa contrasea ah ("123456"); si lineas arriba mencion que daba igual ponerla o no; pues bien, lo que dije es cierto; pueden modificar la contrasea de esta clase y con normalidad seguir haciendo la conexin y consulta. Y claro la clase ConexionConsolaJavaAccess seguir siendo la misma que de los proyectos anteriores (Conexin Java y Derby utilizando Netbeans 7 (ConexionConsolaJavaDerby)): Ahora ejecutando nuestra clase ConexionConsolaJavaAccess debera mostrarnos lo siguiente:
Pero, sobre la contrasea: Eso quiere decir que nuestra base de datos est desprotegida?. Pues cualquiera pudieseingresar a ella. La solucin a ese problema se tiene que implementar desde el mismo Microsoft Access de la siguiente forma: Abrimos la base de datos "AccessBD.accdb" en "Abrir en modo exclusivo" como se muestra:
Ahora s vers que la contrasea hace efecto a nuestra BD "AccessBD.accdb", y si en la claseConexion modificas la contrasea, nuestro proyecto no tendr permisos para acceder a la BD. Dudas y sugerencias, hganlas llegar... gracias! Ahhhhhhh y por favor si el material te fue til aydame recomendando por las redes sociales; dando "Me gusta" en Javaenaccion en Facebook o "+1" en Google+, etc etc. en :D.
Publicado por Roger Soto en 21:30 Enviar por correo electrnicoEscribe un blogCompartir con TwitterCompartir con Facebook Etiquetas: Base de Datos, Java, Microsoft Access
2 comentarios:
29
Post Info
Mouse en 06:24 10 comentarios
Permalink
Para poder acceder a una base de datos de Acces 2000-2010 de Microsoft, podemos utilzar dos formas, una de ellas es utilizando un Origen de Datos ODBC para utiliarlo como puente entra Access y Java, ,una forma mas directa, es enlazar la base de datos Access con Java utilizando la API JDBC de java y especificando el driver, la base de datos y el password (si es que tuviera) para realizar una conexion como se hizo con MySQL y Java. (Conexion a Base de datos)
Nuestra clase java para poder realizar una conexion, es la iguiente: Clase: Access_connection.java codigo fuente
import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; /** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class Access_connection { //contrasea a la base de datos si es que tuviera, si no se deja vacio static String password = ""; //nombre de la base de datos Acces con extension *.mdb o *.accdb static String dbName = "TU_BASE_DE_DATOS.mdb"; //direccion de la base de datos static String bd = System.getProperty("user.dir") + "\\" + dbName + ";PWD=" + password; //driver para base de datos Access 2000, 2003, 2007, 2010
static String url = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=" + bd; Connection conn = null; public Access_connection() { try{ //obtenemos el driver para Access Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //obtenemos la conexin conn = DriverManager.getConnection(url); //si la conexion tuvo exito if (conn!=null){ System.out.println("Conexin a base de datos "+bd+". listo"); } }catch(SQLException e){ System.out.println(e); }catch(ClassNotFoundException e){ System.out.println(e); } } /**Permite retornar la conexin*/ public Connection getConnection(){ return conn; } //como dice su nombre, termina la conexion a la base de datos public void desconectar(){ try { conn.close(); //conn = null; System.out.println("La conexion a la " a terminado"); } catch (SQLException ex) { Logger.getLogger(Access_connection.class.getName()).log(Level .SEVERE, null, ex); } } } base de datos " + bd +
La direccion a la base de datos se la realiza utilizando el comando "System.getProperty("user.dir")", el cual nos retorna la direccion de nuestro proyecto (*.JAR), si se desea especificar otra direccin, por ejemplo: "E:/mi base de datos/db.mdb", solamente se debe eliminar esa instruccion.
La forma de implementar esta clase, es similar a la clase conexion MySQL Conexion a Base de datos. osea:
public class Main { public static void main(String[] args) { //se realiza la conexion Access_connection access = new Access_connection(); //se cierra la conexion access.desconectar(); } }
Access cuenta con dos extensiones para base de datos, para versiones antiguas 2000-2003 utiliza la extension *.mdb y para las versiones recientes de access 2007-2010, utiliza *.accdb, esta
fin?