JDBC para Access sin DSN
Para acceder a Access desde un JDBC, siempre nos han enseñado que se debe a Herramientas Administrativas > Administrador de Orígines de ODBC, crear un nuevo Origen, especificar el nombre del DNS, bla bla bla, y después desde el JDBC escribir como URL el nombre del DNS, bla bla.
Lo malo de esta técnica es que en cada máquina donde se va a ejecutar la aplicación java, necesita que se configure el ODBC. Ya que somos profesionales, debemos evitar las configuraciones adicionales para que nuestra aplicación funcione.
Java nos hace profesionales :)
Así que, ahora evitaremos todo el rollo de crear el DSN en el ODBC. Usemos esto:
Lo malo de esta técnica es que en cada máquina donde se va a ejecutar la aplicación java, necesita que se configure el ODBC. Ya que somos profesionales, debemos evitar las configuraciones adicionales para que nuestra aplicación funcione.
Java nos hace profesionales :)
Así que, ahora evitaremos todo el rollo de crear el DSN en el ODBC. Usemos esto:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String myDB ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/data/neptuno.MDB";
Connection conn = DriverManager.getConnection(myDB,"","");
Pero no solo es para Access, sino para cualquier ODBC. Veamos como hacer lo mismo pero para con el ExcelClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String myDB = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=c:/data.xls;"
+ "DriverID=22;READONLY=false";
Connection conn=DriverManager.getConnection(myDB,"","");
Hola Buenas he estado buscando información para poder conectarme a una bbdd en acces sin tener que configurar DNS, ya que el programa cuando lo instale en otro ordenador no quiero tener que hacer nada. Bueno el problema es que este codigo me da un error y no se por que te lo comento por si sabes algo del tema.
ردحذفEl error es este:
[Microsoft][Controlador ODBC Microsoft Access] No se pudo encontrar el archivo '(desconocido)'.
Te puedo asegurar que el archivo existe.
Gracias
Trata de configurar un DSN de ODBC en ese computador.
ردحذفLuego, asegúrate que esté bien escrito el DSN del Java, revisa los "/" que estén en lugar de los "\"
y como seria en el caso de DSN para MySql¿?
ردحذف¿Conectar desde Java a MySQL usando ODBC?
ردحذفPara hacerlo se utiliza un driver JDBC (Java Database Connect). MySQL tiene el suyo
>http://dev.mysql.com/downloads/connector/j/
Para usarlo, lee su manual:
http://dev.mysql.com/doc/refman/5.1/en/connector-j.html
hola... estoy siguiendo este tutorial (de gran ayuda gracias :D) pero me encuentro con un problema al seleccionar un rango de la hoja excel (con la siguiente query "SELECT * FROM [Sheet1$a1:c3]") ya que dependiendo del nombre de la hoja funciona o no. ¿Sabrás cual puede ser el problema?
ردحذفINFO: Al ejecutar sin el rango me muestra el problema: [Error Code: -1002, SQL State: 37000] [Microsoft][Controlador ODBC Excel] Corchetes no válidos en el nombre ' a d$'. Lo que me indica que si entrecomillo el nombre de la hoja dentro de los corchetes (['nombre']) funciona... pero usando este entrecomillado parece que no se puede seleccionar el rango...
Un Saludo y gracias por atenderme
Hola
ردحذفintenta ponerle un nombre a ese rango, y llámalo usando ese nombre.
Gracias por la contestación ... pero no me interesaría tener que nombrar el rango desde el Excel... a menos que se pudiese hacer desde el código... que creo que no.
ردحذفGracias y un Saludo.
Hola, gracias por las lineas de codigo, pero tengo una pregunta, estoy usando JPA, y no se como conectarme a mi base de datos, uso Access. ¿Alguna idea?
ردحذفen web o desktop ?
ردحذفEn desktop, estoy haciendo una aplicación básica de toma de contacto con JPA, es decir, estoy empezando a trabajar con JPA jeje.
ردحذفPara acceder a Access se necesita de un ODBC, y este no es JDBC nativo, por tanto no es tan fácil hacerlo. Recomiendo siempre usar un JDBC nativo de categoría 4 (Es decir, nada de ODBC). Por ejemplo MySQL, ApacheDB, PostgreSQL, MS SQL, etc... casi todos los motores de base de datos tienen su JDBC.
ردحذفGracias por tu ayuda, pero en el pc donde estoy trabajando, SOLO puedo hacerlo con Acces, he probado a hacer la conexion tipica de JDBC, crearConexion, cargarDriver y eso. Al ejecutar me da exepcion en esta línea:
ردحذفEntityManager em = factory.createEntityManager();
Y en consola me aparece esto:
[EL Info]: 2010-08-11 09:33:21.715--ServerSession(2693887)--property eclipselink.jdbc.user is deprecated, property javax.persistence.jdbc.user should be used instead.
[EL Info]: 2010-08-11 09:33:21.755--ServerSession(2693887)--property eclipselink.jdbc.driver is deprecated, property javax.persistence.jdbc.driver should be used instead.
[EL Info]: 2010-08-11 09:33:21.755--ServerSession(2693887)--property eclipselink.jdbc.url is deprecated, property javax.persistence.jdbc.url should be used instead.
[EL Info]: 2010-08-11 09:33:21.755--ServerSession(2693887)--property eclipselink.jdbc.password is deprecated, property javax.persistence.jdbc.password should be used instead.
[EL Info]: 2010-08-11 09:33:23.791--ServerSession(2693887)--property eclipselink.jdbc.user is deprecated, property javax.persistence.jdbc.user should be used instead.
[EL Info]: 2010-08-11 09:33:23.791--ServerSession(2693887)--property eclipselink.jdbc.driver is deprecated, property javax.persistence.jdbc.driver should be used instead.
[EL Info]: 2010-08-11 09:33:23.791--ServerSession(2693887)--property eclipselink.jdbc.url is deprecated, property javax.persistence.jdbc.url should be used instead.
[EL Info]: 2010-08-11 09:33:23.801--ServerSession(2693887)--property eclipselink.jdbc.password is deprecated, property javax.persistence.jdbc.password should be used instead.
[EL Info]: 2010-08-11 09:33:25.467--ServerSession(2693887)--EclipseLink, version: Eclipse Persistence Services - 2.1.0.v20100614-r7608
[EL Severe]: 2010-08-11 09:33:25.477--ServerSession(2693887)--Local Exception Stack:
Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.1.0.v20100614-r7608): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Configuration error. Class [] not found.
at org.eclipse.persistence.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:82)
at org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:267)
at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:579)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:380)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:157)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:214)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:202)
No se que hacer, la verdad que mi ejemplo es bastante tonto, tengo una clase alumno, con nombre,etc.. y lo que quiero es mediante unos sets, persistir el objeto alumno y que me lo cree en la base de datos..
Gracias
El error que te dice exactamente es este:
ردحذفException Description: Configuration error. Class [] not found.
Clase [] (¿cual clase?) no se encontró.
Revisa qué clases estás utilizando para hacer tu JPA. Asegúrate que diga "sun.jdbc.odbc.JdbcOdbcDriver"
buenas diego, te dejo mi mail, no consigo arreglarlo, un saludo.
ردحذفalexinhoR@hotmail.com
yo recientemente he iniciado la programación en java y para conectarme a java era un problema con los odbc estaba cerca de hacerlo y ley en el articulo y estaba cerca , ahora necesito conectarme a openoffice pueden ayudarme????
ردحذفOpenOffice Base utiliza internamente la base de datos HSQLDB. Aquí hay un post explicando como funciona.
ردحذفhttp://www.apuntesdejava.com/2009/01/base-de-datos-relacionales-en-java.html
¿Pero conectar desde Java al Base usando ese driver?.. pregunta interesante... voy a revisar.
HOLA QUISIERA SABER COMO GENERAR EL CODIGO PARA SQL SERVER POR FAVOR SERIAN TAN AMABLES DE AYUDARME Y DARME UNOS POCOS PARAMETROS DE CONFIGURACION POR QUE NO CONECTA ADEMAS QUE GENERE UNA APLICACION JAR Y LA VERDAD NO FUNCIONA OSEA NO ME ABRE TENGO INSTALDO TODO PERO AL TENER TB INSTALADO EL OVI DE NOKIS ME APARECIA COMO UNA APLICACION JAVA PARA TELEFONO MOVIL Y NO UNA APLICACION JAR PARA COMPUTADOR ALGUIEN SABE COMO CONFIGURAR ESTO POR FAVOR TENGO WINDOWS 7 POR ESO ES LA CONFUSION EN WINDOWS XP NUNCA TUBE PROBLEMA!!!
ردحذفHola muchas gracias por el post disculpa, dos preguntas 1: ¿que versiones de access soporta esas instrucciones?, 2: ¿El DSN debe estar limpio o aunque tenga una DB ya alojada funciona.
ردحذف