Java - problema con JAVA y paradox JDBC:ODBC

 
Vista:
sin imagen de perfil

problema con JAVA y paradox JDBC:ODBC

Publicado por Juan Carlos (1 intervención) el 17/12/2014 23:39:16
Pues les queria pedir ayuda con un problema.

Pasando unos programas de foxpro a java (por cierto la base de datos no se va a tocar y esta esta en paradox) me tope con una situacion, en fox creaban vistas de las tablas y luego con las vistas comenzaban a armar la relacion.

Pero en java, para comenzar a la base de datos en paradox se conectan por OBDC, asi que he tenido que usar el driver que hace puente JDBC:ODBC y no me permite la creacion de vistas

En fox usan esta query:
1
CREATE SQL VIEW VISTA CONNECTION ODBC_conexion AS SELECT TABLA.* FROM TABLA

y en JAVA intente hacer algo parecido:
1
rs = query.executeQuery("CREATE VIEW VISTA AS SELECT * FROM TABLA");

pero me decia este error:

1
java.sql.SQLException: [Microsoft][Controlador ODBC Paradox] Operaci?n no v?lida para este tipo de objeto.

por eso decidi cambiar de estrategia y se me ocurrio convertir el ResultSet en Array y de ahi ver como saco solo los datos que necesito.

la cosa es que probando y haciendo que el ResultSet sea scrolleable hice este codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public Connection conectar() throws SQLException, InstantiationException, IllegalAccessException {
 
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
        } catch (ClassNotFoundException e) {
            System.out.println(e);
        }
 
        conexion = DriverManager.getConnection("jdbc:odbc:2013DCSAE", "ASPEL", "aspel1");
        System.out.println("Conexión establecida");
 
        return conexion;
    }
 
    public Statement estado() {
        try {
            sql = conexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
        } catch (SQLException e) {
            System.out.println(e);
        }
        return sql;
    }
 
    //Y esta funcion la la vi por ahi que sirve para copiar el ResultSet a un Array
    public Object[][] ResultSetToArray(ResultSet rs) {
        Object obj[][] = null;
        int j = 0;
        try {
            rs.last();
            ResultSetMetaData rsmd = rs.getMetaData();
            int numCols = rsmd.getColumnCount();
            int numFils = rs.getRow();
            obj = new Object[numFils][numCols];
            rs.beforeFirst();
            while (rs.next()) {
                for (int i = 0; i < numCols; i++) {
                    obj[j][i] = rs.getObject(i + 1);
                }
                j++;
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        return obj;
    }

Pero la cosa es que estaba probando a que me diera los primeros 10 elementos de la tabla para practicar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) throws SQLException, InstantiationException, IllegalAccessException {
        Statement query;
        ResultSet rs;
        String query1 = null;
        Object[][] arreglo;
 
        Coneccion link = new Coneccion();
        link.conectar();
 
        query = link.estado();
        query1[0] = "SELECT TOP 10 * FROM TABLA WHERE nombre LIKE \"Griselda\"";
        rs = query.executeQuery(query1[0]);
        arreglo = link.ResultSetToArray(rs);
        System.out.println(rs.getString("nombre"));//como aun no se como quedaria en el arreglo, imprimo el ResultSet solo para ver que al menos eso esta bien.

y la cosa es que lo corro y me da este error:

1
java.sql.SQLException: [Microsoft][Controlador ODBC Paradox] Pocos par?metros. Se esperaba 1.

Bueno digo yo sera por el WHERE que lo plantie mal y se lo quito y solo dejo:

1
query1[0] = "SELECT TOP 10 * FROM TABLA WHERE nombre LIKE \"Griselda\"";

pero entonces me da este otro error y me toma toda la tabla

1
java.sql.SQLException: [Microsoft][Administrador de controladores ODBC] Estado del cursor no v?lido

Cual sera el problema?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

problema con JAVA y paradox JDBC:ODBC

Publicado por Tom (1831 intervenciones) el 18/12/2014 10:19:22
De la sintaxis de sql de Paradox, ni idea.
Pero para crear la vista, usa executeUpdate() o execute(), no executeQuery().
Y dentro de los strings sql usa comillas simples, mejor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Julio Cesar

problema con JAVA y paradox JDBC:ODBC

Publicado por Julio Cesar (30 intervenciones) el 18/12/2014 17:02:22
hola en BD una vista nos mas que una consulta de selección, hay gestores de BDs que te permiten realizar estas vistas para como decirte, para que no tengaas q estar escribiendo una y otra vez la misma consulta en eel GBD.
En fin son solo consultas de seleccion..si te sigue dando porblemas solo pasa en Java la consulta que tiene la vista y punto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar