Java - Ingeniero

 
Vista:

Ingeniero

Publicado por Mariojulio Zaldivar (3 intervenciones) el 07/03/2007 21:46:01
Hola a todos
Tengo un gran problema con una consulta (verdaderamente sencilla....).
Esta consulta esta hecha desde java para comunicarse con MSSQL SERVER; la he tipeado como sigue:

public long getLastId(){


String sql;
sql= "SELECT MAX(PROCESS_ID) from COD_REV_REC";


try{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
gotId = rs.getLong("PROCESS_ID");

}catch(SQLException e){
System.err.println("No se pueden obtener las tablas de la base de datos, o no es SQL server 2000");
e.printStackTrace();
}

return gotId;
}

Lo cual me retorna el siguiente error:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid column name: PROCESS_ID
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getColumnOrdinal(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getLong(Unknown Source)
....Y SE CAE EN LA LINEA DE CODIGO:
gotId = rs.getLong("PROCESS_ID");

Como ven, es un método para obtener el codigo mayor de la columna "PROCESS_ID"
Este metodo corre sin problemas en tro programa que hice. La unica diferencia entre aquel programa y este, es que el primero se conecta mediante ODBC y el que actualemente me da problemas, se conecta mediante el Driver de Microsoft para SQLSERVER(JDBC)

Pense que derepente era por el alias de la columna, es decir, la consulta la cambie por esta linea
sql= "SELECT MAX(PROCESS_ID) AS Maximo from COD_REV_REC";
y luego la variable gotId le pase este valor:
gotId = rs.getLong("Maximo");

El hecho es que al ejecutar mi programa, me sale el siguiente error:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.validateCursorPosition(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getLong(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getLong(Unknown Source)

...Y SE VUELVE A CAER EN LA MISMA LINEA
gotId = rs.getLong("Maximo");

ALGUNA IDEA??

Agredeceria mucho su ayuda

Mariojulio Zaldivar
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

RE:Ingeniero

Publicado por Angel (537 intervenciones) el 07/03/2007 22:26:54
Has llamado a rs.next() antes de hacer rs.getLong("Maximo") y depues de ejecutar la consulta....??

Saludos
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