使用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数据库,现在我们将创建一个新数据库并使用它。
create database Test; use Test;
现在让我们创建一个名为Employee的表,其中包含emp_id、emp_name和emo_email字段。
查询
create table Employee(emp_id int primary key,emp_name varchar(20), emp_email varchar(20)); desc Employee;
输出
向Employee表中插入一些记录:
insert into Employee values(1,"Hari","[email protected]"); insert into Employee values(2,"Syam","[email protected]"); insert into Employee values(3,"Revanth","[email protected]");
让我们检查数据是否已插入到表中:
查询
select *from Employee;
输出
现在我们准备好了数据。让我们创建一个Java应用程序,并借助Eclipse IDE尝试连接到此数据库。创建Java应用程序后,我们需要使用JDBC驱动程序才能从我们在MySQL中创建的表中获取行数,此过程主要包括四个步骤:
建立连接。
创建Statement对象。
执行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://127.0.0.1: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://127.0.0.1:3306/Test"; String user ="root"; String password = "root"; Connection myConn = null; ResultSet result = null; try { //We will provide the url,username and the password to establish the connection myConn = DriverManager.getConnection(url,user,password); //creating a statement Statement myStmt = myConn.createStatement(); //Total Rows is nothing but Alias name //and we will specify the query which we need to execute inside executeQuery() result= myStmt.executeQuery("select count(1) as TotalRows from Employee"); //result.next() will executes the query result.next(); //displaying the result i.e we will display number of rows in the table in console System.out.println("Employee Table contains "+ result.getInt("TotalRows") + " rows"); } catch(Exception e){ // this catch block is used to handle the exceptions e.printStackTrace(); } finally { //close the connection 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://127.0.0.1:3306/Test"; String user ="root"; String password = "root"; Connection myConn = null; ResultSet result = null; try { //We will provide the url,username and the password to establish the connection myConn = DriverManager.getConnection(url,user,password); //creating a statement //TYPE_SCROLL_SENSITIVE helps to move the cursor in forward or backward direction //CONCUR_READ_ONLY means we cannot the update the resultSet only read is possible Statement myStmt = myConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //Total Rows is nothing but Alias name //and we will specify the query which we need to execute inside executeQuery() result= myStmt.executeQuery("select * from Employee"); //result.next() will executes the query result.last(); //displaying the result i.e we will display number of rows in the table in console System.out.println("Employee Table contains " +result.getRow()+ " rows"); } catch(Exception e){ // this catch block is used to handle the exceptions e.printStackTrace(); } finally { //close the connection myConn=null; result=null; } } }
输出
Employee Table contains 3 rows
结论
在本文中,我们研究了如何使用JDBC获取表中总行数的方法和实现,并且我们还看到了JDBC的关键组件,这些组件能够与不同的数据库系统进行流畅的交互。