Java ResultSet interface is a part of the java.sql package. It is one of the core components of the JDBC Framework. ResultSet Object is used to access query results retrieved from the relational databases.
Java ResultSet接口是java.sql包的一部分。 它是JDBC框架的核心組件之一。 ResultSet對象用于訪問從關系數據庫檢索的查詢結果。
ResultSet maintains cursor/pointer which points to a single row of the query results. Using navigational and getter methods provided by ResultSet, we can iterate and access database records one by one. ResultSet can also be used to update data.
ResultSet維護指向查詢結果的單行的光標/指針。 使用ResultSet提供的導航和獲取方法,我們可以一個一個地迭代和訪問數據庫記錄。 ResultSet也可以用于更新數據。
java string contains、The above diagram shows the place of ResultSet in the JDBC Framework. ResultSet can be obtained by executing SQL Query using Statement, PreparedStatement or CallableStatement.
上圖顯示了ResultSet在JDBC Framework中的位置。 通過使用Statement , PreparedStatement或CallableStatement執行SQL查詢可以獲得ResultSet 。
AutoCloseable, Wrapper are super interfaces of ResultSet.? Now we will see how to work with ResultSet in our Java programs.
AutoCloseable , Wrapper是ResultSet的超級接口。 現在,我們將看到如何在Java程序中使用ResultSet。
We will be using MySQL for our example purpose. Use below DB script to create a database and table along with some records.
jdbc resultset, 我們將使用MySQL作為示例。 使用下面的DB腳本來創建數據庫和表以及一些記錄。
create database empdb;use empdb;create table tblemployee (empid integer primary key, firstname varchar(32), lastname varchar(32), dob date);insert into tblemployee values (1, 'Mike', 'Davis',' 1998-11-11');
insert into tblemployee values (2, 'Josh', 'Martin', '1988-10-22');
insert into tblemployee values (3, 'Ricky', 'Smith', '1999-05-11');
Let’s have look at the below example program to fetch the records from the table and print them on the console. Please make sure you have the MySQL JDBC driver in the project classpath.
讓我們看下面的示例程序,從表中獲取記錄并將其打印在控制臺上。 請確保在項目類路徑中有MySQL JDBC驅動程序。
package com.journaldev.examples;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;/*** Java Resultset Example of Retrieving records.* * @author pankaj**/public class ResultSetDemo {public static void main(String[] args) {String query = "select empid, firstname, lastname, dob from tblemployee";Connection conn = null;Statement stmt = null;try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/empdb", "root", "root");stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(query);while (rs.next()) {Integer empId = rs.getInt(1);String firstName = rs.getString(2);String lastName = rs.getString(3);Date dob = rs.getDate(4);System.out.println("empId:" + empId);System.out.println("firstName:" + firstName);System.out.println("lastName:" + lastName);System.out.println("dob:" + dob);System.out.println("");}rs.close();} catch (Exception e) {e.printStackTrace();} finally {try {stmt.close();conn.close();} catch (Exception e) {}}}
}
Output:
輸出:
empId:1
firstName:Mike
lastName:Davis
dob:1998-11-11empId:2
firstName:Josh
lastName:Martin
dob:1988-10-22empId:3
firstName:Ricky
lastName:Smith
dob:1999-05-11
java field.set,Explanation:
說明 :
We can specify type and concurrency of? ResultSet while creating an instance of Statement, PreparedStatement or CallableStatement.
在創建Statement, PreparedStatement或CallableStatement的實例時,我們可以指定ResultSet的類型和并發性。
statement.createStatement(int resultSetType, int resultSetConcurrency)
java queue poll。 statement.createStatement(int resultSetType,int resultSetConcurrency)
This type of ResultSet instance can move only in the forward direction from the first row to the last row. ResultSet can be moved forward one row by calling the next() method. We can obtain this type of ResultSet while creating Instance of Statement, PreparedStatement or CallableStatement.
這種類型的ResultSet實例只能從第一行到最后一行向前移動。 可以通過調用next()方法將ResultSet向前移動一行。 在創建Statement,PreparedStatement或CallableStatement的實例時,我們可以獲取這種類型的ResultSet。
Statement stmt = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("select * from tbluser");
Scroll Insensitive ResultSet can scroll in both forward and backward directions. It can also be scrolled to an absolute position by calling the absolute() method. But it is not sensitive to data changes. It will only have data when the query was executed and ResultSet was obtained. It will not reflect the changes made to data after it was obtained.
滾動不敏感ResultSet可以向前和向后滾動。 也可以通過調用absolute()方法將其滾動到絕對位置。 但是它對數據更改不敏感。 它僅在執行查詢并獲得ResultSet時才具有數據。 它不會反映獲得數據后對數據所做的更改。
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("select * from tbluser");
Java編程。Scroll Sensitive ResultSet can scroll in both forward and backward directions. It can also be scrolled to an absolute position by calling the absolute() method. But it is sensitive to data changes. It will reflect the changes made to data while it is open.
滾動敏感結果集可以向前和向后滾動。 也可以通過調用absolute()方法將其滾動到絕對位置。 但是它對數據更改很敏感。 它會反映打開時對數據所做的更改。
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("select * from tbluser");
It is the default concurrency model.? We can only perform Read-Only operations on ResultSet Instance. No update Operations are allowed.
它是默認的并發模型。 我們只能對ResultSet實例執行只讀操作。 不允許任何更新操作。
In this case, we can perform update operations on ResultSet instance.
java resultset。 在這種情況下,我們可以對ResultSet實例執行更新操作。
We can divide ResultSet methods into the following categories.
我們可以將ResultSet方法分為以下幾類。
package com.journaldev.examples;
import java.sql.*;/*** Java Resultset Example using navigational methods.* * @author pankaj**/
public class ResultSetDemo {public static void main(String[] args) {String query = "select empid, firstname, lastname, dob from tblemployee";Connection conn = null;Statement stmt = null;try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/empdb", "root", "root");stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);ResultSet rs = stmt.executeQuery(query);System.out.println("All the rows of table=>");while (rs.next()) { // Go to next row by calling next() methoddisplayData(rs);}System.out.println("Now go directly to 2nd row=>");rs.absolute(2); // Go directly to 2nd rowdisplayData(rs);System.out.println("Now go to Previous row=>");rs.previous(); // Go to 1st row which is previous of 2nd rowdisplayData(rs);rs.close();} catch (Exception e) {e.printStackTrace();} finally {try {stmt.close();conn.close();} catch (Exception e) {}}}public static void displayData(ResultSet rs) throws SQLException {System.out.println("empId:" + rs.getInt(1));System.out.println("firstName:" + rs.getString(2));System.out.println("lastName:" + rs.getString(3));System.out.println("dob:" + rs.getDate(4));System.out.println("");}
}
Output:
輸出:
All the rows of table=>
empId:1
firstName:Mike
lastName:Davis
dob:1998-11-11empId:2
firstName:Josh
lastName:Martin
dob:1988-10-22empId:3
firstName:Ricky
lastName:Smith
dob:1999-05-11Now go directly to 2nd row=>
empId:2
firstName:Josh
lastName:Martin
dob:1988-10-22Now go to Previous row=>
empId:1
firstName:Mike
lastName:Davis
dob:1998-11-11
java contains、Note: Setter/Updater Methods doesn’t directly update database values. Database values will be inserted/updated after calling the insertRow or updateRow method.
注意:設置器/更新器方法不會直接更新數據庫值。 調用insertRow或updateRow方法后,將插入/更新數據庫值 。
package com.journaldev.examples;
import java.sql.*;/*** Java Resultset Example using updater methods.* * @author pankaj**/public class ResultSetUpdateDemo {public static void main(String[] args) {String query = "select empid, firstname, lastname, dob from tblemployee";Connection conn = null;Statement stmt = null;try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/empdb", "root", "root");stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);ResultSet rs = stmt.executeQuery(query);System.out.println("Now go directly to 2nd row for Update");if (rs.absolute(2)) { // Go directly to 2nd rowSystem.out.println("Existing Name:" + rs.getString("firstName"));rs.updateString("firstname", "Tyson");rs.updateRow();}rs.beforeFirst(); // go to startSystem.out.println("All the rows of table=>");while (rs.next()) { // Go to next row by calling next() methoddisplayData(rs);}rs.close();} catch (Exception e) {e.printStackTrace();} finally {try {stmt.close();conn.close();} catch (Exception e) {}}}public static void displayData(ResultSet rs) throws SQLException {System.out.println("empId:" + rs.getInt(1));System.out.println("firstName:" + rs.getString(2));System.out.println("lastName:" + rs.getString(3));System.out.println("dob:" + rs.getDate(4));System.out.println("");}
}
Output:
輸出:
Now go directly to 2nd row for Update
Existing Name:Josh
All the rows of table=>
empId:1
firstName:Mike
lastName:Davis
dob:1998-11-11empId:2
firstName:Tyson
lastName:Martin
dob:1988-10-22empId:3
firstName:Ricky
lastName:Smith
dob:1999-05-11
Reference: Java doc
java基礎開發教程、 參考 : Java文檔
翻譯自: https://www.journaldev.com/34720/java-resultset
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态