Por favor buscar debajo de mi consulta,

select nvl(max(transaction_id),0) as  transaction_id from exception_details;

Si puedo ejecutar la consulta anterior a través de mi jdbc código, que me está dando java.sql.SQLException: Fail to convert to internal representation
mi JDBC código es el siguiente:

public int fetchColumnVal(String query) throws SQLException, IllegalAccessException, 
    InvocationTargetException, NoSuchMethodException, ClassNotFoundException, InstantiationException {

    PreparedStatement pstmt = null;
    Connection con = null;
    try {
        con = getConnection(true);
        pstmt = con.prepareStatement(query);
        ResultSet rs = pstmt.executeQuery();
        rs.next();
        int count=rs.getInt(1);
        return count;
    } finally {
        if (isBatchMode) {
            this.cleanResources(null, pstmt);
        }
        else {
            this.cleanResources(con, pstmt);
        }
    }
}

y el tipo de datos de la columna de transaction_id en la tabla es el NÚMERO

  • Trate de usar getBigDecimal o getLong en lugar de getInt.
  • He intentado utilizar getBigDecimal() sigue dándome el mismo error y la salida de la consulta es 0, por lo que todavía debe tratar de usar getLong()
  • Podría usted por favor enviar el mensaje de error completo de seguimiento?
  • El error sugiere que usted está seleccionando un varchar2; se puede comprobar que la transaction_id es en realidad define como number (sé que ya se ha dicho, pero aún así…), y que esta es en realidad la consulta que está causando el error? Puede que al menos log/mostrar el valor de query antes de ejecutarlo para comprobar lo que se está ejecutando? (No puede ser exactamente eso de todos modos – el punto y coma final podría causar un error).
InformationsquelleAutor Vinda | 2013-12-23

4 Comentarios

  1. 1

    si utiliza @Enumerados sin definir EnumType.CADENA, yo.e
    @Enumerados(EnumType.CADENA)
    y tu tabla ya contiene datos de Cadena (Varchar), obtendrá este error, cos.
    por defecto EnumType es ORDINAL, yo.e EnumType.ORDINAL.

  2. 0

    SQL JDBC/Java setXXX getXXX

    NUMÉRICO de java.de matemáticas.BigDecimal setBigDecimal getBigDecimal

    cambio de rs.getInt(1); a la rs.getBigDecimal(1);

    (o) de conversión de tipo número entero en sql como la siguiente para oracle:

    CAST(id integer)

    • Hola, como por su solución anterior traté de desarrollo de la misma en mi código como BigDecimal count=rs.getBigDecimal(1); pero sigue dándome el mismo excepción
    • Puede conversión de tipo de la columna en la consulta de selección de un número entero y dejar el código rs.getInt(1); y tratar
    • Se puede comprobar que la sintaxis de la función nvl, por favor, consulte el enlace de abajo para oracle :techonthenet.com/oracle/functions/nvl.php select cast(nvl(max(transaction_id),0) as integer) como transaction_id de exception_details; [también comprobar el 1-st parámetro de la función nvl espera string]
  3. 0

    Me gustaría sugerir un enfoque más tradicional para el conjunto de resultados de recuento de comprobación.
    Inicialmente intenté usar:

           while (RS.next()) {
                RScount = RS.getInt(1);
                Set.add(RS.getString(1));
            }

    Pero como mi SQL resultado era String, Java mantenido sobre el lanzamiento:

    java.sql.SQLException: Fail to convert to internal representation

    Entonces he cambiado mi código para plain Vanilla:
    Declaración, inicializado en 0:

    Integer RScount = 0; //SQL result set counter

    Y el código del contador como:

        while (RS.next()) {
            RScount++;
            Set.add(RS.getString(1));
        }
  4. 0

    Estaba recibiendo el error como

    Excepción Foundjava.sql.SQLException: no convertir a la representación interna.

    He escrito mi código como :

     while(res.next())  
            System.out.println(  res.getInt(1) + "  "
                               + res.getString(2) + "  "
                               + res.getString(3) + "  "
                               + res.getString(4));

    pero mi tipo de datos de 1 de campo en la base de datos fue de tipo varchar.

    Entonces he cambiado mi código:

    while(res.next())  
            System.out.println(  res.getString(1) + "  "
                               + res.getString(2) + "  "
                               + res.getString(3) + "  "
                               + res.getString(4));

    entonces yo tengo todos mis datos.

    • Formato de tu código

Dejar respuesta

Please enter your comment!
Please enter your name here