JDBC 中的 Result 是什么?如何从 ResultSet 对象中检索数据?
jdbcjava 8mysqlmysqli database
JDBC 中的 ResultSet 接口表示由 SQL 查询生成的表格数据。它有一个指向当前行的游标。最初,此游标位于第一行之前。
在结果集中移动指针
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 { //Registering the Driver DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Getting the connection String mysqlUrl = "jdbc:mysql://localhost/TestDB"; 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 Dataset"); System.out.println("Contents of the table"); while(rs.next()) { System.out.print("Brand: "+rs.getString("Mobile_Brand")+", "); System.out.print("Sale: "+rs.getString("Unit_Sale")); System.out.println(""); } } }
输出
Connection established...... Contents of the table Brand: Iphone, Sale: 3000 Brand: Samsung, Sale: 4000 Brand: Nokia, Sale: 5000 Brand: Vivo, Sale: 1500 Brand: Oppo, Sale: 900 Brand: MI, Sale: 6400 Brand: MotoG, Sale: 4360 Brand: Lenovo, Sale: 4100 Brand: RedMi, Sale: 4000 Brand: MotoG, Sale: 4360 Brand: OnePlus, Sale: 6334