Acceder campos de base dato Oracle
Estoy recuperando datos en un ResulSet desde Oracle, los campos de tipo String, Fecha, etc, me los recupera sin problemas pero al reciperar los tipos Integer y Number me da el siguiente error.
java.sql.SQLException: [Oracle][ODBC]Invalid column number <1>.
El codigo es el siguiente:
String sql = "select * from estudiantes where codigo=" + _codigo;
Statement s = db.createStatement();
ResultSet rs = s.executeQuery(sql);
if (rs.next()) {
setNombre(rs.getString("nombre"));
setObservacion(rs.getString("observacion"));
setSexo(rs.getInt("sexo"));
setCodigo(rs.getInt("codigo"));
setCod_grupo(rs.getInt("cod_grupo"));
setActivo(rs.getInt("activo"));
//arreglar los campos fecha, aqui........
setFec_nac((rs.getDate("fec_nac")));
setFecha_baja((rs.getDate("fecha_baja")));
codigo = _codigo;
}
else {
setStatus("El estudiante no existe...");
}
Cuando llega al primer getInt(sexo) ya me da la excepcion de SQL. Llevo un dia y medio tratando de buscar el error y nada. Ya probe a poner todos los campos en el mismo orden de la tabla, a poner el id de la columna en vez del nombre, a oreguntar por el getObject y ahi tambien me da el error.
Alguien tienen alguna solucion ¿?.
Estamos usando el puente jdbc-odbc
(Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");)
java.sql.SQLException: [Oracle][ODBC]Invalid column number <1>.
El codigo es el siguiente:
String sql = "select * from estudiantes where codigo=" + _codigo;
Statement s = db.createStatement();
ResultSet rs = s.executeQuery(sql);
if (rs.next()) {
setNombre(rs.getString("nombre"));
setObservacion(rs.getString("observacion"));
setSexo(rs.getInt("sexo"));
setCodigo(rs.getInt("codigo"));
setCod_grupo(rs.getInt("cod_grupo"));
setActivo(rs.getInt("activo"));
//arreglar los campos fecha, aqui........
setFec_nac((rs.getDate("fec_nac")));
setFecha_baja((rs.getDate("fecha_baja")));
codigo = _codigo;
}
else {
setStatus("El estudiante no existe...");
}
Cuando llega al primer getInt(sexo) ya me da la excepcion de SQL. Llevo un dia y medio tratando de buscar el error y nada. Ya probe a poner todos los campos en el mismo orden de la tabla, a poner el id de la columna en vez del nombre, a oreguntar por el getObject y ahi tambien me da el error.
Alguien tienen alguna solucion ¿?.
Estamos usando el puente jdbc-odbc
(Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");)
hola
no estoy muy seguro pero creo que controlador puente jdbc-odbc no soporta getInt("nombreColumna"), has probado con getInt(1), dando como parametro el numero de columna.
saludos
no estoy muy seguro pero creo que controlador puente jdbc-odbc no soporta getInt("nombreColumna"), has probado con getInt(1), dando como parametro el numero de columna.
saludos
Puede que jcalienes tenga razon, yo normalmente uso el numero de columas para sacar los registros. getString(1). Ten cuidado con los tipos que SqlServer es muy especial, estas segura que sexo es int, y no bit o byte o double??? En caso de duda yo siempre lo dejo en un getdouble y el driver perfectamente me lo covierte al Int o lo que sea y me funciona.