如何使用不同的行方法通过 JDBC 获取表中的行数?

javaobject oriented programmingprogramming更新于 2024/11/12 23:40:17

在这个数据驱动的世界中,与数据库交互的能力是许多软件程序的重要要求。Java 是一种多功能且强大的编程语言,它提供 Java 数据库连接 (JDBC),这是一种有效的机制,可以实现与不同数据库系统的顺畅交互。

JDBC 是一种 API,它为 Java 应用程序与数据库通信提供了标准化接口。我们可以将其用作 Java 应用程序和数据库之间的桥梁,执行查询、插入更新和删除数据等操作。

本文帮助我们深入了解 Java 的 JDBC API,使我们能够利用其功能执行高效的数据库操作。

JDBC 的重要关键组件是:

  • JDBC 驱动程序:JDBC 驱动程序的作用是连接到数据库并将 JDBC 请求转换为特定于数据库的命令。请确保为您的数据库系统选择正确的驱动程序,因为不同的数据库需要不同类型的驱动程序。

  • JDBC API:JDBC API 由类和接口组成,这些类和接口指定用于执行数据库操作的方法和功能。它包括用于连接数据库、运行 SQL 查询、获取和更改数据以及管理事务的类。

  • JDBC URL:JDBC URL 是一个唯一字符串标识符,包含建立数据库连接的关键信息。此信息包含数据库类型、主机、端口、数据库名称和登录凭据等内容。

为了获取表中的行数,首先让我们在 MYSQL 数据库中创建一个表,否则您可以使用任何您熟悉的数据库。

让我们创建一个表:-

打开 Mysql 数据库,现在我们将创建一个新的数据库并使用它。

创建数据库测试;
使用测试;

现在让我们创建一个包含 emp_id、emp_name、emo_email 的员工表。

查询

create table Employee(emp_id int primary key,emp_name varchar(20), emp_email varchar(20));
desc Employee;

输出

Insert some records into the Employee Table:-

insert into Employee values(1,"Hari","hari123@gmail.com");
insert into Employee values(2,"Syam","syam98@gmail.com");
insert into Employee values(3,"Revanth","Revanth53@gmail.com");

让我们检查数据是否已插入表中:-

查询

select *from Employee;

输出

现在我们已准备好数据。让我们创建一个 Java 应用程序并尝试在 Eclipse IDE 的帮助下连接到该数据库。创建 java 应用程序后,我们需要使用 JDBC 驱动程序来获取我们在 Mysql 中创建的表中的行数,此过程主要包括 4 个步骤:-

  • 建立连接。

  • 创建语句。

  • 执行 sql 语句。

  • 关闭连接。

在建立与数据库的连接之前,我们需要加载 JDBC 驱动程序,或者仅从 maven 存储库添加建立连接所需的 mysql 依赖项,驱动程序类名将根据我们使用的数据库而有所不同。

Class.forName("com.mysql.jdbc.Driver");

或

依赖项

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.27</version>
</dependency>

现在我们将使用 JDBC url、用户名和密码建立与数据库的连接。

Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/Test","root", "root");

一旦建立连接,我们就可以使用 Statement 或 PreparedStatement 类执行我们的 sql 语句。

主要有两种方法可以从表中获取行数,大多数人使用的最常见方法是:

select count(*) from Employee;

但这是效率较低的方法,我们还有另一种获取行数的方法:

select count(1) from Employee;

此查询使用第一列计算行数。由于主键通常是第一列,因为主键不为空且始终是唯一的。

示例 1

在此示例中,我们使用 count(1) 通过 JDBC 获取表中的记录总数。

import java.net.ConnectException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class App {

   
   public static void main(String[] args) throws Exception
   {
      String url = "jdbc:mysql://localhost:3306/Test";
      String user ="root";
      String password = "root";
      Connection myConn = null;
      ResultSet result = null;
      try {
        //我们将提供 url、用户名和密码来建立连接
        myConn = DriverManager.getConnection(url,user,password);
        
        //创建语句
        Statement myStmt = myConn.createStatement();
        
        //Total Rows 只是别名
        //我们将在 executeQuery() 中指定需要执行的查询
        result= myStmt.executeQuery("select count(1) as TotalRows from Employee");
        
        //result.next() 将执行查询
        result.next();
        //显示结果,即我们将在控制台中显示表中的行数
        System.out.println("Employee Table contains "+ result.getInt("TotalRows") + " rows");

      }
      catch(Exception e){
         // 此 catch 块用于处理异常
         e.printStackTrace();
      }
      
      finally {
         //关闭连接
         myConn=null;
         result=null;
      }

   }
}

输出

Employee Table contains 3 rows

示例 2

我们还有一种方法可以使用 resultSet.getRow() 方法获取行数。

import java.net.ConnectException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class App {

   
   public static void main(String[] args) throws Exception
   {
      String url = "jdbc:mysql://localhost:3306/Test";
      String user ="root";
      String password = "root";
      Connection myConn = null;
      ResultSet result = null;
      try {
        //我们将提供 url、用户名和密码来建立连接
        myConn = DriverManager.getConnection(url,user,password);
        
        //创建一个语句
        //TYPE_SCROLL_SENSITIVE 有助于向前或向后移动光标
        //CONCUR_READ_ONLY 表示我们不能更新结果集,只能读取
        Statement myStmt = myConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
        //Total Rows 只是别名
        //我们将在 executeQuery() 中指定我们需要执行的查询
        result= myStmt.executeQuery("select * from Employee");
        
        //result.next() 将执行查询
        result.last();
        //显示结果,即我们将在控制台中显示表中的行数
        System.out.println("Employee Table contains " +result.getRow()+ " rows");

      }
      catch(Exception e){
         // 此 catch 块用于处理异常
         e.printStackTrace();
      }
      
      finally {
         //关闭连接
         myConn=null;
         result=null;
      }

   }
}

输出

Employee Table contains 3 rows

结论

在本文中,我们研究了如何借助 JDBC 获取表中的总行数的方法和实现,还了解了实现与不同数据库系统顺畅交互的 JDBC 关键组件。


相关文章


有用资源