
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:
y en JAVA intente hacer algo parecido:
pero me decia este error:
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:
Pero la cosa es que estaba probando a que me diera los primeros 10 elementos de la tabla para practicar
y la cosa es que lo corro y me da este error:
Bueno digo yo sera por el WHERE que lo plantie mal y se lo quito y solo dejo:
pero entonces me da este otro error y me toma toda la tabla
Cual sera el 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


0