De conexiones va la cosa

Me querría conectar directamente a unas tablas en paradox, tengo configurado el odbc como paradox 4x con nombre=Paradoxdb solo puse eso no se si lo configure mal o bien, con access me funciona con paradox no... Creo que tengo mal los paramtros de conexión pero como nunca me conecte no se muy bien como va, te dejo el código por si tienes algún comentario.
public CBaseDeDatos(String controlador, String URL_bd,
String usuario, String contraseña)
throws ClassNotFoundException, java.sql.SQLException,
InstantiationException, IllegalAccessException
{
// Cargar el controlador JDBC
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
// Conectar con la fuente de datos
conectar(URL_bd, usuario, contraseña);
}
private void conectar(String URL_bd, String usuario,
String contraseña) throws java.sql.SQLException
{
// Conectar con la BD
conexión = java.sql.DriverManager.getConnection(
"Dsn=Paradoxdb;dbq=C:\080508=C:\080508;driverid=538;fil=Paradox 4.X;maxbuffersize=2048;pagetimeout=5;uid=admin", usuario, contraseña);
// Crear una sentencia SQL
sentenciaSQL = conexión.createStatement(
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_UPDATABLE);
System.out.println("Conexión realizada con Exito.\n");
}

1 Respuesta

Respuesta
1
Creo que si tienes la conexión ODBC bien (te funciona el test de conexión en la herramienta de configuración ODBC de Windows), llamar desde java tiene que ser tan fácil como:


conexión = java.sql.DriverManager.getConnection("jdbc:odbc:Paradoxdb", usuario, contraseña);
El resto de parámetros de conexión deben estar metidos en la configuración propia de ODBC para el origen de datos "Paradoxdb".
Espero que te funcione. Un saludo y no olvides valorar mi respuesta:
Carlos
Hola, pues creo que funcionó, ahora el problema, es que no me saca la consulta, te pego la excepción que me pone aver si tu sabes el motivo
init:
deps-jar:
Compile:
run:
Conexión realizada con Éxito.
java.sql.SQLException: [Microsoft][Controlador ODBC Paradox] La operación no es compatible con una tabla Paradox sin clave principal.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
Te dejo el código de la conexión y consulta haber si ves algo que yo no veo, por que probé el código con access y me funciona...
public class CBaseDeDatos
{
private java.sql.Connection conexión;
private java.sql.Statement sentenciaSQL;
private java.sql.ResultSet cdr; // conjunto de resultados
public CBaseDeDatos(String controlador, String URL_bd,
String usuario, String contraseña)
throws ClassNotFoundException, java.sql.SQLException,
InstantiationException, IllegalAccessException
{
// Cargar el controlador JDBC
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
// Conectar con la fuente de datos
conectar(URL_bd, usuario, contraseña);
}
private void conectar(String URL_bd, String usuario,
String contraseña) throws java.sql.SQLException
{
// Conectar con la BD
conexión = java.sql.DriverManager.getConnection(
"jdbc:odbc:datos", usuario, contraseña);
// Crear una sentencia SQL
sentenciaSQL = conexión.createStatement(
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_UPDATABLE);
System.out.println("Conexión realizada con Exito.\n");
}
public void cerrarConexion() throws java.sql.SQLException
{
if (cdr != null) cdr.close();
if (sentenciaSQL != null) sentenciaSQL.close();
if (conexión != null) conexión.close();
}
public java.sql.ResultSet obtenerTabla(String tabla)
throws java.sql.SQLException
{
cdr = sentenciaSQL.executeQuery("SELECT * FROM " + tabla);
return cdr;
}
}
Bueno aver que me puedes decir por que ando un poco desesperada, muchas gracias por la ayuda prestada, un Saludo¡
Creo que te falla por el parámetro CONCUR_UPDATABLE que le pasas cuando creas el statement. Puede que no sea compatible con una tabla que no tenga clave primaria, como parece ser tu caso. Prueba a cambiar ese parámetro por "ResultSet.CONCUR_READ_ONLY" a ver que pasa. Si va bien, tienes dos opciones: o lo dejas así, o le pones el parámetro que tenías antes pero modificando la estructura de la tabla en Paradox para que tenga una clave primaria.
Si te sigue sin funcionar, prueba a no pasar ningún parámetro en el createStatement().
A ver si tira...
Hola, probé a cambiarlo y quitarlo, y me sigue con lo mismo las tablas que no tienen clave primaria no las carga... sin embargo las importe a access y me funciona bien, pero el problema es que tengo que acceder directamente, ¿cuál es el problema? ¿Mediante JDBC solo se puede acceder a tablas paradox con clave primaria, intente vincularlas para ponerles clave primaria y nada no deja XDDD la única forma es abrirlas con paradox y ponérsela, sabes de donde me lo puedo descargar? ¿? ¿? ¿Es gratuito, lo que pasa es que lo de andar cambiando las claves creo que no va ser buena solución... Que otra forma crees tu, que puedo utilizar para poder acceder a todas, de todas formas muchas gracias por la ayuda prestada Un saludo¡
He estado consultando algo por internet, y parece que el motor ODBC de Microsoft no soporta totalmente los accesos a Paradox. Por lo visto, para que vaya bien bien, tienes que instalar un motor adicional que se llama "Borland Database Engine (BDE)". Como supongo que no tienes disponible esa aplicación para instalarla, yo creo que lo mejor es crear en Paradox las claves primarias en las tablas que no la tengan. Intentalo con sentencias SQL del tipo ALTER TABLE para meter una clave primaria en cada tabla.
Respecto a usar un driver jdbc específico para Paradox, creo que son todos de pago.
Suerte ;-)
Carlos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas