修改结果集数据的示例
此 Microsoft JDBC Driver for SQL Server 示例应用程序说明了如何从 SQL Server 数据库中检索可更新的数据集。 然后,它使用 SQLServerResultSet 对象的方法在数据集中插入、修改并最终删除一行数据。
此示例的代码文件名为“UpdateResultSet.java”,位于以下位置:
\<installation directory>\sqljdbc_<version>\<language>\samples\resultsets
要求
若要运行此示例应用程序,必须设置 classpath 以包含 mssql-jdbc jar 文件。 还将需要访问 AdventureWorks2022 示例数据库。 若要详细了解如何设置类路径,请参阅使用 JDBC 驱动程序。
注意
Microsoft JDBC Driver for SQL Server 提供要使用的 mssql-jdbc 类库文件,具体使用哪个文件取决于首选的 Java Runtime Environment (JRE) 设置。 有关选择哪个 JAR 文件的详细信息,请参阅 JDBC 驱动程序的系统要求。
示例
示例代码建立与 AdventureWorks2022 示例数据库的连接。 然后,将 SQL 语句与 SQLServerStatement 对象一起使用,它运行 SQL 语句,并将它返回的数据放入可更新的 SQLServerResultSet 对象中。
接下来,示例代码使用 moveToInsertRow 方法将结果集游标移动到插入行。 然后,它使用一系列 updateString 方法将数据插入新行。 之后,它调用 insertRow 方法,将新数据行保留回数据库。
插入新数据行后,示例代码使用 SQL 语句检索以前插入的行。 在那里,它将结合使用 updateString
和 updateRow 方法来更新数据行,并再次将它保存回数据库中。
最后,示例代码检索前面已更新的数据行,然后使用 deleteRow 方法将其从数据库中删除。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateResultSet {
public static void main(String[] args) {
// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://<server>:<port>;encrypt=true;databaseName=AdventureWorks;user=<user>;password=<password>";
try (Connection con = DriverManager.getConnection(connectionUrl);
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);) {
// Create and execute a SQL statement, retrieving an updateable result set.
String SQL = "SELECT * FROM HumanResources.Department;";
ResultSet rs = stmt.executeQuery(SQL);
// Insert a row of data.
rs.moveToInsertRow();
rs.updateString("Name", "Accounting");
rs.updateString("GroupName", "Executive General and Administration");
rs.updateString("ModifiedDate", "08/01/2006");
rs.insertRow();
// Retrieve the inserted row of data and display it.
SQL = "SELECT * FROM HumanResources.Department WHERE Name = 'Accounting';";
rs = stmt.executeQuery(SQL);
displayRow("ADDED ROW", rs);
// Update the row of data.
rs.first();
rs.updateString("GroupName", "Finance");
rs.updateRow();
// Retrieve the updated row of data and display it.
rs = stmt.executeQuery(SQL);
displayRow("UPDATED ROW", rs);
// Delete the row of data.
rs.first();
rs.deleteRow();
System.out.println("ROW DELETED");
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}
private static void displayRow(String title,
ResultSet rs) throws SQLException {
System.out.println(title);
while (rs.next()) {
System.out.println(rs.getString("Name") + " : " + rs.getString("GroupName"));
System.out.println();
}
}
}