¿Cómo usar diferentes métodos de fila para obtener el número de filas en una tabla en JDBC?

Java admite muchas bases de datos y, para cada base de datos, debemos tener sus respectivos archivos jar para colocarlos en la ruta de compilación para continuar con la conectividad JDBC. Para diferentes bases de datos, se importan diferentes archivos jar para hacer una conexión que se indica a continuación o se supone que se agrega su ruta construida para bases de datos específicas.

  • Tipos de base de datos
    • sql
      • MySQL: mysql-conector-java-8.0.22
      • postgresql
      • Oráculo: ojdbc14.jar
      • Servidor SQL de Microsoft
    • No SQL
      • MongoDB: mongo-java-driver-3.12.7
      • Mesa grande
      • redis
      • Progreso
      • casandra
      • CouchDB
      • CuervoDB

Ilustración: Las bases de datos SQL y Oracle se utilizan principalmente para ilustración. Aquí se tiene en cuenta la base de datos SQL. Aquí Table_Name es el nombre de la tabla. Aquí tomará todas las columnas y contará las filas.

Entrada: los datos existentes en la tabla se muestran en la siguiente imagen

  • Servidor SQL utilizado: sqljdbc4.jar
  • tabla SQL utilizada

CREATE TABLE `studentsdetails` (
`id` int(6) unsigned NOT NULL,
`Name` varchar(50) NOT NULL,
`caste` varchar(10) NOT NULL,
`NeetMarks` int(11) NOT NULL,
`gender` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Enfoques: 

Una forma menos eficiente de crear una consulta

select count(*) from Table_Name;

Una forma más eficiente de crear una consulta

select count(1) from Table_Name;

Esta consulta tomará la primera columna y contará las filas. Como la mayoría de las veces, la clave principal es la primera columna, es lo suficientemente ideal ya que la clave principal siempre es única y no nula.

Ejemplo 1 Ejemplo 2
Dará solo una fila como salida que contiene un número de filas. Por lo tanto, ‘resultset’ se mantendrá como el siguiente. select * traerá todo el conjunto de resultados y el cursor se verá obligado a moverse en último lugar y, finalmente, el método ‘resultset.getRow()’ dará el número de filas. 
es mas eficiente Es comparativamente menos eficiente.

Ejemplo 1: Para obtener el número de filas en una tabla en JDBC seleccionando count(1) de ‘studentsdetails’ proporcionará el resultado como 5.

Java

/* Java Program to use different row methods
to get no of rows in a table in JDBC */
 
// Step 1: Importing database libraries
import java.sql.*;
 
// Only main class- GFG is shown
// connection class object is used
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Initially connection is assigned Null valued
        Connection con = null;
        ResultSet res = null;
 
        // Try block to check exceptions
        try {
 
            /* Step 2: Load and register drivers or
               relevant jars in build path of project */
 
            // Here- 'mysql-connector-java-8.0.22'
            // is used using Class.forNmae() method
            Class.forName("com.mysql.cj.jdbc.Driver");
 
            /* Step 3: Establish a connection using
                       DriverManager method */
            con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?serverTimezone=UTC",
                "root", "");
 
            // Try block to check exceptions
            try {
                Statement st = con.createStatement();
                /* This query will take first column and
                 count the rows. As mostly, Primary key is
                 the first column, it is ideal enough as
                 Primary key is always unique and not
                 null */
 
                /* Step 4: Create a statement */
 
                /* Alias name is used as NumberOfRows
                for COUNT(1) Moving the cursor to the
                last row */
                res = st.executeQuery(
                    "SELECT COUNT(1) as NumberOfRows FROM "
                    + "studentsdetails");
 
                /* Step 5: Execute the query */
                res.next();
 
                /* Step 6: Process the results */
                System.out.println(
                    "MySQL Table -  studentsdetails contains "
                    + res.getInt("NumberOfRows") + " rows");
            }
 
            // Catch block to handle exceptions
            catch (SQLException s) {
                // Message to be displayed if SQLException
                // occurs
                System.out.println(
                    "SQL statement is not executed!");
            }
        }
        catch (Exception e) {
 
            /* Displaying line where exception occurred using
               method returning line number in code */
            e.printStackTrace();
        }
 
        finally {
 
            // Step 7: Closing the connection
            res = null;
            con = null;
        }
    }
}

 
Producción: 

Ejemplo 2: Para obtener el número de filas en una tabla en JDBC

Java

/* Step 1: Importing Database libraries */
import java.sql.*;
 
/* Only main class-GFG is shown
Connection class of JDBC is not shown.
Object of connection class is used */
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        /* Objects are assigned null
          before any execution */
 
        // Connection class objects
        Connection con = null;
        ResultSet res = null;
 
        // Try block to check exceptions
        try {
 
            /* Step 2: Load and register drivers
            or relevant jars in build path of project */
 
            // Driver used- 'mysql-connector-java-8.0.22'
 
            // Loading and register drivers
            // using Class.forname() method
            Class.forName("com.mysql.cj.jdbc.Driver");
 
            /* Step 3: Create a connection */
            // using DriverManager
            con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?serverTimezone=UTC",
                "root", "");
 
            // Display message when connection
            // is successfully established
            System.out.println(
                "Connection is established");
 
            // Try block to check exceptions
            try {
 
                /* In order to avoid Result set type is
                 TYPE_FORWARD_ONLY */
 
                Statement st = con.createStatement(
                    ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
                /* Query takes first column and
                 count the rows. As mostly, Primary key is
                  the first column, it is ideal enough as
                  Primary key is always unique & not null.
                 */
 
                /* Step 4: Creating the statement */
                res = st.executeQuery("SELECT *  FROM "
                                      + "studentsdetails");
                /* Step 5: Execute the statements */
                // Moving the cursor to the last row
                res.last();
 
                /* Step 6: Process the results */
                System.out.println(
                    "MySQL Table -  studentsdetails contains "
                    + res.getRow() + " rows");
            }
 
            // Catch block to handle exceptions
            catch (SQLException s) {
 
                // Exception handled if it is SQL based
                System.out.println(
                    "SQL statement is not executed!"
                    + s.getMessage());
            }
        }
        catch (Exception e) {
 
            // Exception handled here if it is generic
            // program based
            e.printStackTrace();
        }
        finally {
 
            // Step 7: Closing the connection
            res = null;
            con = null;
        }
    }
}

Producción: 

Publicación traducida automáticamente

Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *