ResultSet 的 updateRow() 方法及示例


當我們執行某些 SQL 查詢(通常是 SELECT 查詢)時,它們會返回表格資料。

java.sql.ResultSet 介面表示 SQL 語句返回的此類表格資料。

即,ResultSet 物件儲存由執行查詢資料庫語句的方法(通常是 Statement 介面的 executeQuery() 方法)返回的表格資料。

ResultSet 物件有一個游標/指標,指向當前行。最初,此游標位於第一行之前。

ResultSet 介面的 updateRow() 方法將當前行的內容更新到資料庫。例如,如果我們使用 ResultSet 介面的 updateXXX() 方法(updateNClob()、updateNCharacterStream()、updateString()、updateInt()、updateNString()、updateBinaryStream())更新了特定記錄的值

您需要呼叫此方法才能將對行所做的更改反映到資料庫中。

注意:要使用 updateRow() 方法更新 ResultSet 的內容。ResultSet 必須是 CONCUR_UPDATABLE 型別,並且表必須包含主鍵約束。

讓我們使用如下所示的 CREATE 語句在 MySQL 資料庫中建立一個名為 customers 的表:

CREATE TABLE customers (
   ID INT,
   Name VARCHAR(20),
   AGE INT,
   SALARY INT,
   ADDERSS VARCHAR(255),
   PRIMARY KEY (ID)
);

現在,我們將使用 INSERT 語句在 customers 表中插入 12 條記錄 -

insert into customers values(1, 'Amit', 25, 3000, 'Hyderabad');
insert into customers values(2, 'Kalyan', 27, 4000, 'Vishakhapatnam');
insert into customers values(3, 'Renuka', 30, 5000, 'Delhi');
insert into customers values(4, 'Archana', 24, 1500, 'Mumbai');
insert into customers values(5, 'Kaushik', 30, 9000, 'Kota');
insert into customers values(6, 'Hardik', 45, 6400, 'Bhopal');
insert into customers values(7, 'Trupthi', 33, 4360, 'Ahmedabad');
insert into customers values(8, 'Mithili', 26, 4100, 'Vijayawada');
insert into customers values(9, 'Maneesh', 39, 4000, 'Hyderabad');
insert into customers values(10, 'Rajaneesh', 30, 6400, 'Delhi');
insert into customers values(11, 'Komal', 29, 8000, 'Ahmedabad');
insert into customers values(12, 'Manyata', 25, 5000, 'Vijayawada');

以下 JDBC 程式建立與資料庫的連線,將 customers 表的內容檢索到 ResultSet 物件中,使用 updateXXX() 方法更新 id 值為 5 的行的內容,並使用 updateRow() 方法將整行更新到資料庫。

示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ResultSet_updateRow {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql:///mydatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating the Statement
      Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
      //Query to retrieve records
      String query = "Select * from Customers";
      //Executing the query
      ResultSet rs = stmt.executeQuery(query);
      //Updating the contents of the record with id value 5
      while(rs.next()) {
         if(rs.getInt("ID")==5) {
            //Updating the salary
            rs.updateInt("Salary", 11000);
            //Updating the address
            rs.updateString("ADDRESS","Narsipatnam");
            //Updating the row
            rs.updateRow();
         }
      }
      rs.beforeFirst();
      System.out.println("Contents of the Customers table after the update: ");
      //Printing the contents of the table
      while(rs.next()) {
         System.out.print("ID: "+rs.getInt("ID")+", ");
         System.out.print("Name: "+rs.getString("Name")+", ");
         System.out.print("Age: "+rs.getInt("Age")+", ");
         System.out.print("Salary: "+rs.getInt("Salary")+", ");
         System.out.print("Address: "+rs.getString("Address"));
         System.out.println();
      }
   }
}

輸出

Connection established......
Contents of the table Customers:
ID: 1, Name: Amit, Age: 25, Salary: 3000, Address: Hyderabad
ID: 2, Name: Kalyan, Age: 27, Salary: 4000, Address: Vishakhapatnam
ID: 3, Name: Renuka, Age: 30, Salary: 5000, Address: Delhi
ID: 4, Name: Archana, Age: 24, Salary: 1500, Address: Mumbai
ID: 5, Name: Koushik, Age: 30, Salary: 11000, Address: Narsipatnam
ID: 6, Name: Hardik, Age: 45, Salary: 6400, Address: Bhopal
ID: 7, Name: Trupthi, Age: 33, Salary: 4360, Address: Ahmedabad
ID: 8, Name: Mithili, Age: 26, Salary: 4100, Address: Vijayawada
ID: 9, Name: Maneesh, Age: 39, Salary: 4000, Address: Hyderabad
ID: 10, Name: Rajaneesh, Age: 30, Salary: 6400, Address: Delhi
ID: 11, Name: Komal, Age: 29, Salary: 8000, Address: Ahmedabad
ID: 12, Name: Manyata, Age: 25, Salary: 5000, Address: Vijayawada

更新於: 2019-07-30

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.