MySQL JDBC中的结果(Result)是什么?如何从ResultSet对象中检索数据?
JDBC中的 ResultSet 接口表示由SQL查询生成的表格数据。 它有一个指针指向当前行。最初,该指针位于第一行之前。
阅读更多:MySQL 教程
在结果集中移动指针
ResultSet 接口的 next() 方法将当前(ResultSet)对象的指针从其当前位置移动到下一行。 此方法返回一个布尔值,如果其当前位置的下一行不存在,则返回false,否则返回true。 因此,在while循环中使用此方法,您可以迭代结果集的内容。
while(rs.next()){
}
获取每个记录的列值:
ResultSet接口(还)提供了getter方法(getXXX())来检索行中每个列的值。 每个getter方法都有两个变量:
- getXXX(int columnIndex): 这接受一个整数值,表示列的索引并返回它的值。
-
getXXX(String columnLabel ): 这接受一个表示列名称的字符串值,并返回其值。
根据表格中列的数据类型,您需要使用相应的getter方法。
示例
假设我们有一个名为dataset的表,其内容如下所示:
+--------------+-----------+
| mobile_brand | unit_sale |
+--------------+-----------+
| Iphone | 3000 |
| Samsung | 4000 |
| Nokia | 5000 |
| Vivo | 1500 |
| Oppo | 900 |
| MI | 6400 |
| MotoG | 4360 |
| Lenovo | 4100 |
| RedMi | 4000 |
| MotoG | 4360 |
| OnePlus | 6334 |
+--------------+-----------+
示例
以下示例检索 Dataset 表的所有记录并打印结果:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RetrievingData {
public static void main(String args[]) throws Exception {
// 注册驱动程序
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//获取连接
String mysqlUrl = "jdbc:mysql://localhost/TestDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("连接已建立......");
// 创建Statement对象
Statement stmt = con.createStatement();
// 检索单个数据
ResultSet rs = stmt.executeQuery("select * from Dataset");
System.out.println("表的内容");
while(rs.next()) {
System.out.print("品牌: "+rs.getString("Mobile_Brand")+", ");
System.out.print("销售: "+rs.getString("Unit_Sale"));
System.out.println("");
}
}
}
输出结果
连接已建立......
表的内容
品牌:Iphone, 销售:3000
品牌:Samsung,销售:4000
品牌:Nokia,销售:5000
品牌:Vivo,销售:1500
品牌:Oppo,销售:900
品牌:MI,销售:6400
品牌:MotoG,销售:4360
品牌:Lenovo,销售:4100
品牌:RedMi,销售:4000
品牌:MotoG,销售:4360
品牌:OnePlus,销售:6334