Bootstrap

如何进行java更新_Java如何在可更新的ResultSet中进行更新?

使用可更新的结果集,我们的程序可以从该ResultSet对象更新数据库中的记录。对ResultSet对象的操作可以更新,插入或删除。通过这种机制,我们可以在不执行sql命令的情况下更新数据库。

在下面的例子中,我们有一个products用表id,code,name,和price。加载结果集后的第一步,更新第一条记录的产品名称。然后,我们移至下一条记录并将其删除。最后,我们将新记录插入数据库。package org.nhooo.example.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class UpdatableResultSetDemo {

private static final String URL = "jdbc:mysql://localhost/nhooo";

private static final String USERNAME = "root";

private static final String PASSWORD = "";

public static void main(String[] args) {

try (Connection connection =

DriverManager.getConnection(URL, USERNAME, PASSWORD)) {

//创建一个可更新的结果集。这意味着

// 使用单独的sql命令来更新数据,我们可以

// 直接在结果集对象中更新它。

//

// 使其可更新的原因是,当创建

// 声明我们要求连接对象创建声明

//与CONCUR_UPDATABLE。可更新不需要

// TYPE_SCROLL_SENSITIVE,但将此参数添加到

// 声明使我们能够来回更新数据。

Statement statement = connection.createStatement(

ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

String query = "SELECT id, code, name, price FROM products";

ResultSet rs = statement.executeQuery(query);

System.out.println("id\tcode\tname\tprice");

while (rs.next()) {

System.out.println(rs.getLong("id") + "\t"

+ rs.getString("code") + "\t"

+ rs.getString("name") + "\t"

+ rs.getDouble("price"));

}

//移至第一行并更新结果集数据。后

// 我们更新行值,我们将updateRow()方法调用为

// 更新数据库中的数据。

rs.first();

rs.updateString("name", "UML Distilled 3rd Edition");

rs.updateRow();

// 移至下一个结果集行,然后删除

// 结果集并将其应用于数据库。

rs.next();

rs.deleteRow();

// 使用以下命令在结果集对象中插入新行:

//moveToInsertRow()方法。提供信息为

// 插入,最后调用insertRow()方法插入

// 记录到数据库。

rs.moveToInsertRow();

rs.updateString("code", "P0000010");

rs.updateString("name", "Data Structures, Algorithms");

rs.updateDouble("price", 50.99);

rs.insertRow();

rs.beforeFirst();

System.out.println();

System.out.println("id\tcode\tname\tprice");

while (rs.next()) {

System.out.println(rs.getLong("id") + "\t"

+ rs.getString("code") + "\t"

+ rs.getString("name") + "\t"

+ rs.getDouble("price"));

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

该代码段打印出以下输出:id  code    name    price

1   P0000001    Java 2 Notebook 25.0

2   P0000002    Java Servlet Programming    30.0

3   P0000003    PHP Programming 20.0

4   P0000004    Longman Active Study Dictionary 40.0

5   P0000005    Ruby on Rails   24.0

6   P0000006    Championship Manager    0.0

7   P0000007    Transport Tycoon Deluxe 0.0

8   P0000008    Roller Coaster Tycoon 3 0.0

9   P0000009    Pro Evolution Soccer    0.0

id  code    name    price

1   P0000001    UML Distilled 3rd Edition   25.0

3   P0000003    PHP Programming 20.0

4   P0000004    Longman Active Study Dictionary 40.0

5   P0000005    Ruby on Rails   24.0

6   P0000006    Championship Manager    0.0

7   P0000007    Transport Tycoon Deluxe 0.0

8   P0000008    Roller Coaster Tycoon 3 0.0

9   P0000009    Pro Evolution Soccer    0.0

10  P0000010    Data Structures, Algorithms 50.99

Maven依赖

mysql

mysql-connector-java

8.0.17

mysql-connector-java.svg?label=Maven%20Central

;