[Microsoft][Administrador de controladores ODBC] Índice de descriptor no válido

DER FUHRER
08 de Noviembre del 2005
a ver... el codigo es muy simple, no tiene errores o al menos no los veo... qien me puede decir què hacer porq me sale este error al intentar recuperar el primer campo y no corre el procedimiento!!!!

public void loadData (int userID,Connection cn) {
String sql ="select VSMusers.userID, userName,userEmail,userAddress, userTelephone, userPassword from VSMusers where userID =" + String.valueOf(userID) ;
System.out.println(sql);
try{
Statement stmt = cn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
rs.next();
mvarUserName= rs.getString(0);
mvarUserEmail=rs.getString(1);
this.UserAddress(rs.getString(2));
this.UserTelephone(rs.getString(3));
this.UserPassword(rs.getString(4));
}
catch(SQLException e){
System.out.println(e.getMessage());
}

}

fescalero
08 de Noviembre del 2005
Hola!! Cuando quieres conectar con bases de datos odbc dependiendo del drier tienes que declarar el identificador de la base de datos que pones al crear la conexion. En windows se hace con el \"odbcad32\". No se si sera eso.
Una vez declarada ya puedes utilizar ese nombre para conectar.

Vanesa
08 de Noviembre del 2005
Si te da ese error en al obtener el primer campo, es muy muy probable que la consulta no devuelva ningun registro, puedes comprobarlo con rs.getRow() que devuelve el numero de filas, si es 0 ya sabes...

DER FUHRER
08 de Noviembre del 2005
gracias VANE! pero no era eso, he probado la consulta y si trae registros, es mas... los puse en el watch y los muestra pero justo cuando pasa la linea de getCampo en el primer campo se da el error.

Fescalero, creo q es por donde dices, mira.. no qiero dejarlo con ODBC, solo lo hice por el momento, voy a buscar reemplazar de una vez esa conexion por una mejor, qiza el pool de una vez si encuentro... si tuvieras alguna info, o link o algo pls pasamela XD

Vanesa
08 de Noviembre del 2005
Si el código que te da error es el mismo que el de hace unos días, es decir:
...
rs.next();
mvarUserName= rs.getString(0);
mvarUserEmail=rs.getString(1);
this.UserAddress(rs.getString(2));
this.UserTelephone(rs.getString(3));
this.UserPassword(rs.getString(4));
...
el error lo tienes en "rs.getString(0)", ya que el primer indice de columna es el 1, y no el 0, leete el API de java.sql.ResultSet.
Un saludo