Click here to load reader
Upload
unurato
View
633
Download
2
Embed Size (px)
Citation preview
Conexión Java y Microsoft Access 2010 desde Netbeans en Windows 7
Hola a todos!!, esta pubicación está dedicada a todos
pero en especial a un compañero de clases; William, bueno empecemos mencionando lo que
necesitamos para el correcto funcionamiento de este ejemplo:
Microsoft Access, en cualquiera de sus versiones ya sea anteriores(2003) como posteriores
(trabajé con la versión 2010), lo que cambia es únicamente las extensiones con las que se
guarda una Base de Datos.
Una vez abierto Microsoft Access procedemos a crear la Base de Datos, la Tabla y luego
rellenamos algunos datos.
*Nota 01: Si no logras cambiar el nombre de la BD a tu preferencia, hazlo ubicando el archivo
origen.
*Nota 02: Observa que la extensión 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 dirección por defecto que Access tiene asignado en el sistema
("C:\Users\"tu_usuario"\Documents" en Windows7), puesto que esta publicación será
para Conexiones indirectas o estáticas.
Con lo cual deberá quedar de la siguiente manera:
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 pestaña "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:
Ahora vamos a agregarle una contraseña
*Nota: Aunque por razones que están en proceso de investigación la contraseña que se pone aquí
no se activa (por decirlo de otra forma, osea pongamos o no contraseña da lo mismo). Veremos
más adelante cómo ponerle una contraseña a nuestra BD!!
Nos queda Aceptar y Aceptar!!
Ahora veamos el código fuente del proyecto:
Recibirá el nombre y la estructura de carpetas que se muestra a continuación:
Veamos la clase Conexion que varió ligeramente:
Como en este caso no hemos utilizando un driver como en casos anteriores; trabajamos
conClass.forName(" ").
Se preguntarán qué hace esa contraseña ahí ("123456"); si lineas arriba mencioné que daba
igual ponerla o no; pues bien, lo que dije es cierto; pueden modificar la contraseña de esta
clase y con normalidad seguirá haciendo la conexión y consulta.
Y claro la clase ConexionConsolaJavaAccess seguirá siendo la misma que de los proyectos
anteriores (Conexión Java y Derby utilizando Netbeans 7 (ConexionConsolaJavaDerby)):
Ahora ejecutando nuestra clase ConexionConsolaJavaAccess debería mostrarnos lo
siguiente:
Pero, sobre la contraseña:
¿Eso quiere decir que nuestra base de datos está desprotegida?. Pues cualquiera
pudieseingresar a ella.
La solución 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 hacemos lo siguiente:
Finalmente ponemos la contraseña y damos Aceptar y Aceptar!!!
Ahora sí verás que la contraseña hace efecto a nuestra BD "AccessBD.accdb", y si en la
claseConexion modificas la contraseña, nuestro proyecto no tendrá permisos para acceder a
la BD.
Dudas y sugerencias, háganlas llegar... gracias!
Ahhhhhhh y por favor si el material te fue útil ayúdame 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 electrónicoEscribe un blogCompartir con TwitterCompartir con Facebook
Etiquetas: Base de Datos, Java, Microsoft Access
2 comentarios:
1.
Lidia Silva _pĿª∫ŧ‼ќ_ġї®Ŀ _!!28 de mayo de 2
Conexion base de datos Access y Java
J AN29
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 {
//contraseña 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 conexión
conn = DriverManager.getConnection(url);
//si la conexion tuvo exito
if (conn!=null){
System.out.println("Conexión a base de datos "+bd+". listo");
}
}catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}
}
/**Permite retornar la conexión*/
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 base de datos " + bd +
" a terminado");
} catch (SQLException ex) {
Logger.getLogger(Access_connection.class.getName()).log(Level
.SEVERE, null, ex);
}
}
}
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 dirección, 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
clase, Access_connection.java, realiza la conexion para ambas versiones.
fin?