如何使用JDBC程序更新ResultSet的内容?

要更新ResultSet的内容,您需要通过传递ResultSet类型的可更新来创建一条语句,如下所示:

//创建一个Statement对象

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_UPDATABLE);

就像getXXX()setXXX()方法一样,ResultSet接口也提供了更新结果集中行内容的方法updateXXX()

这些方法接受表示要更新的行的索引的整数值,或表示列标签的String值。

请注意,如果您需要更新ResultSet的内容,则该表应具有主键。

示例

假设我们有一个名为Employees的表,具有5条记录,如下所示:

+----+---------+--------+----------------+

| Id | Name    | Salary | Location       |

+----+---------+--------+----------------+

|  1 | Amit    | 3000   | Hyderabad      |

|  2 | Kalyan  | 4000   | Vishakhapatnam |

|  3 | Renuka  | 6000   | Delhi          |

|  4 | Archana | 9000   | Mumbai         |

|  5 | Sumith  | 11000  | Hyderabad      |

+----+---------+--------+----------------+

下面的示例演示如何更新结果集的内容:

import java.sql.*;

public class ResultSetExample {

   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("Connection established......");

      //创建一个Statement对象

      Statement stmt = con.createStatement(

      ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

      //检索数据

      ResultSet rs = stmt.executeQuery("select * from Employees");

      //打印表的内容

      System.out.println("Contents of the table: ");

      printRs(rs);

      //的起点

      rs.beforeFirst();

      //每位员工的薪水提高5000-

      while(rs.next()){

         //通过列名检索

         int newSal = rs.getInt("Salary") + 5000;

         rs.updateInt( "Salary", newSal );

         rs.updateRow();

      }

      System.out.println("Contents of the ResultSet after increasing salaries");

      printRs(rs);

      //首先将位置设置为第二条记录

      rs.beforeFirst();

      rs.absolute(2);

      System.out.println("Record we need to delete: ");

      System.out.print("ID: " + rs.getInt("id"));

      System.out.print(", Salary: " + rs.getInt("Salary"));

      System.out.print(", Name: " + rs.getString("Name"));

      System.out.println(", Location: " + rs.getString("Location"));

      System.out.println(" ");

      //删除行

      rs.deleteRow();

      System.out.println("Contents of the ResultSet after deleting one records...");

      printRs(rs);

      System.out.println("Goodbye!");

   }

   public static void printRs(ResultSet rs) throws SQLException{

      //确保我们从第一行开始

      rs.beforeFirst();

      while(rs.next()){

         System.out.print("ID: " + rs.getInt("id"));

         System.out.print(", Salary: " + rs.getInt("Salary"));

         System.out.print(", Name: " + rs.getString("Name"));

         System.out.println(", Location: " + rs.getString("Location"));

      }

      System.out.println();

   }

}

输出结果

Connection established......

Contents of the table:

ID: 1, Salary: 3000, Name: Amit, Location: Hyderabad

ID: 2, Salary: 4000, Name: Kalyan, Location: Vishakhapatnam

ID: 3, Salary: 6000, Name: Renuka, Location: Delhi

ID: 4, Salary: 9000, Name: Archana, Location: Mumbai

ID: 5, Salary: 11000, Name: Sumith, Location: Hyderabad

Conetnets of the resultset after increaing salaries

ID: 1, Salary: 8000, Name: Amit, Location: Hyderabad

ID: 2, Salary: 9000, Name: Kalyan, Location: Vishakhapatnam

ID: 3, Salary: 11000, Name: Renuka, Location: Delhi

ID: 4, Salary: 14000, Name: Archana, Location: Mumbai

ID: 5, Salary: 16000, Name: Sumith, Location: Hyderabad

Record we need to delete:

ID: 2, Salary: 9000, Name: Kalyan, Location: Vishakhapatnam

Contents of the resultset after deleting one records...

ID: 1, Salary: 8000, Name: Amit, Location: Hyderabad

ID: 3, Salary: 11000, Name: Renuka, Location: Delhi

ID: 4, Salary: 14000, Name: Archana, Location: Mumbai

ID: 5, Salary: 16000, Name: Sumith, Location: Hyderabad

Goodbye!

以上是 如何使用JDBC程序更新ResultSet的内容? 的全部内容, 来源链接: utcz.com/z/335079.html

回到顶部