Перейти к контенту

Примеры получения количества столбцов и строк ResultSet в JDBC

Вы можете получить количество столбцов в таблице, используя метод getColumnCount() интерфейса ResultSetMetaData. При вызове этот метод возвращает целое число, представляющее количество столбцов в текущем объекте ResultSet.

//Retrieving the ResultSetMetaData object
ResultSetMetaData rsmd = rs.getMetaData();
//getting the column type
int column_count = rsmd.getColumnCount();

Давайте создадим таблицу с именем employee_data в базе данных MySQL, используя инструкцию CREATE.

 

CREATE TABLE employee_data(
   id INT,
   Name VARCHAR(255),
   DOB date,
   Location VARCHAR(40)
);

После этого программа JDBC устанавливает соединение с базой данных, получает объект ResultSetMetaData таблицы employee_data и печатает количество столбцов в ней.

Пример получения количества столбцов

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class NumberOfColumns {
   public static void main(String args[])throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery("select * from employee_data");
      //Retrieving the ResultSetMetaData object
      ResultSetMetaData rsmd = rs.getMetaData();
      //getting the column type
      int column_count = rsmd.getColumnCount();
      System.out.println("Number of columns in the table : "+column_count);
   }
}

Вывод

Connection established......
Number of columns in the table : 4

Всякий раз, когда мы выполняем операторы SQL с помощью метода executeQuery(), он возвращает объект ResultSet, который содержит табличные данные, возвращаемые запросами SELECT (в целом).

Объект ResultSet содержит курсор / указатель, который указывает на текущую строку. Первоначально этот курсор располагается перед первой строкой (позиция по умолчанию).

Интерфейс ResultSet предоставляет различные методы для поиска, столбцы no.of, имя столбца, тип столбца и т. Д., Но он не предоставляет никакого метода для непосредственного нахождения количества строк.

Используя функцию count (*) в запросе SELECT, вы можете получить количество строк в таблице как:

select count(*) from Table_Name;

Давайте создадим таблицу с именем MyPlayers в базе данных MySQL с помощью оператора CREATE:

CREATE TABLE MyPlayers(
   ID INT,
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255),
   PRIMARY KEY (ID)
);

Теперь мы вставим 7 записей в таблицу MyPlayers, используя операторы INSERT —

insert into MyPlayers values(1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
insert into MyPlayers values(2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
insert into MyPlayers values(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
insert into MyPlayers values(4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
insert into MyPlayers values(5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
insert into MyPlayers values(6, 'Ravindra', 'Jadeja', DATE('1988-12-06'), 'Nagpur', 'India');
insert into MyPlayers values(7, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England');

Следующая программа JDBC находит количество строк в приведенной выше таблице и отображает значение.

Пример нахождения количества строк

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RS_Row_Count {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select count(*) from MyPlayers");
      rs.next();
      //Moving the cursor to the last row
      System.out.println("Table contains "+rs.getInt("count(*)")+" rows");
   }
}

Вывод

Connection established......
Table contains 8 rows

Получение количества строк с использованием методов

Метод last() интерфейса ResultSet перемещает курсор в последнюю строку ResultSet, а метод getRow() возвращает индекс / позицию текущей строки.

Поэтому, чтобы получить количество, переместите курсор на последнюю строку с помощью метода last() и получите положение этой (последней) строки с помощью метода getRow().

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RS_Row_Count {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from MyPlayers");
      //Moving the cursor to the last row
      rs.last();
      System.out.println("Table contains "+rs.getRow()+" rows");
   }
}

Вывод

 

Connection established......
Table contains 8 rows

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)