如何使用不同的行方法通过 JDBC 获取表中的行数?
在这个数据驱动的世界中,与数据库交互的能力是许多软件程序的重要要求。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 关键组件。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

