Quiero saber si el conjunto de resultados puede ser cerrado si no me cierre ? Tengo un conjunto de resultados está cerrada la excepción, pero estoy seguro de que no me cierre el conjunto de resultados en cualquier lugar .
Lo que yo hago es exactamente la que yo uso el conjunto de resultados para realizar una consulta de selección, a continuación, puedo usar el mismo conjunto de resultados debido a que es llamado por este método :

public Object getValueAt( int row, int column )
        throws IllegalStateException {
    //ensure database connection is available
    if ( !dbConnection.isConnectedToDatabase() )
        throw new IllegalStateException( "Not Connected to Database" );

    //obtain a value at specified ResultSet row and column

    try {
        getResultSet().absolute( row + 1 );
        return getResultSet().getObject( column + 1 );
    } //end try
    catch ( SQLException sqlException ) {
        System.out.println("Exception from here dude");
        sqlException.printStackTrace();
    } //end catch

    return ""; //if problems, return empty string object
} //end method getValueAt

Entonces , otra pregunta : ¿hay una manera de asegurar que el conjunto de resultados se abre ?

Tercera pregunta : tal vez el problema porque yo nunca cerca de conjuntos de resultados .

¿Cuál es el punto de cierre conjunto de resultados ?

Edit : Esa es la declaración está siendo creado dentro del constructor de una clase que se llama DBConnection:

Class.forName(driver);
        //connect to database
        connection = DriverManager.getConnection(url, username, password);

        //create Statement to query database
        statement = connection.createStatement(
     ResultSet.TYPE_SCROLL_INSENSITIVE,
     ResultSet.CONCUR_READ_ONLY );

        //connection ok
        connectedToDatabase=true;

Conjunto de resultados creados más tarde cuando quiero ejecutar una instrucción.

InformationsquelleAutor Ahmed | 2011-02-13

3 Comentarios

  1. 8

    Directamente desde los documentos en el conjunto de resultados.close():

    Versiones de este conjunto de resultados del objeto de base de datos y JDBC recursos de inmediato en lugar de esperar a que esto suceda cuando se cierra automáticamente.

    Nota: Un objeto ResultSet se cierra automáticamente por la Declaración objeto que ha generado este cuando la Declaración objeto está cerrado, vuelve a ejecutar, o se utiliza para obtener el siguiente resultado de una secuencia de múltiples resultados.

    Así que, si está cerrada la Instrucción que generó el conjunto de resultados es cerrado, se puede conseguir que la excepción.

    Otra pregunta a responder: usted no debe leer los resultados de un conjunto de resultados como ese. Realizar el seleccionar una lectura de todos los datos que necesita el conjunto de resultados a la vez, cerrar la conexión y, a continuación, más tarde, usted puede leer los datos recopilados tanto como usted desea. Usted realmente no debería tener un recurso externo/clase de llamar a su getValueAt método, la cual se espera todavía ser conectado a la base de datos. La conexión puede ser terminada por muchas otras razones, por lo que no es el camino a seguir.

    Tercera respuesta: contestado arriba.

    Última respuesta: la liberación de recursos de forma explícita, sin esperar a que se cierre cuando la Declaración es.

    • Esas son 2 diferentes operaciones de la realidad .. estoy usando una conexión , por lo que estoy usando una instrucción y muchos conjuntos de resultados . Es que el problema ?
    • Si usted lee la «Nota» de la sección docs he pegado encima, se dice que un conjunto de resultados es cerrado si se vuelve a ejecutar o el siguiente resultado os múltiples resultados se recupera. Así que, cualquiera que sea su enfoque para esto, sólo el último conjunto de resultados es válido, y todos los demás están cerrados. Como ya he dicho, recuperar todos los resultados, guárdelos en un lugar y, a continuación, leer como se desee.
    • ¿Cómo puedo usar su enfoque y ResultSetTableModel juntos ? ResultSetTableModel ofertas con el conjunto de resultados directamente.
    • Nunca he oído hablar de esta clase antes de empezar, vamos a hablar de la utilización de la misma. En este caso, puede hacer que la búsqueda, la visualización de la reults, a continuación, ciérrelo. De lo contrario, lea cada fila de datos en una matriz o un objeto especial, poner a cada uno en una lista o matriz, cerca de la ResultSet y, a continuación, utilizar esta lista/array para leer y mostrar los datos, sin tener que preocuparse acerca de las conexiones cerradas o lo que sea, como he dicho antes.
  2. 0

    En caso de haber cerrado cualquiera de los siguientes, el conjunto de resultados se cerrará automáticamente:

    1. Declaración objeto.
    2. Objeto de conexión.

    Estoy sospechando de que la conexión se ha cerrado. Es una tendencia natural para cerrar la conexión de base de datos una vez que se ejecute la consulta. Si bien es una buena práctica, pero puede ser que se cierre la conexión incluso antes de haber utilizado el objeto ResultSet en el interior de su TableModel clase.

    • No . tal vez porque estoy usando una declaración de ejemplo para todas mis consultas ?
  3. 0

    Yo siempre cerca de las Conexiones, conjuntos de resultados y Declaraciones finalmente {} bloque. En tal caso no tengo este problema, ya que este bloque se ejecuta siempre (Bueno, no siempre, pero aquí cabe). Por favor refiérase a este post, he puesto el esqueleto de la aplicación que puede ser interesante para usted.

Dejar respuesta

Please enter your comment!
Please enter your name here