修改結果集資料範例
此 Microsoft JDBC Driver for SQL Server 範例應用程式示範如何從 SQL Server 資料庫擷取可更新的一組資料。 然後,使用 SQLServerResultSet 物件的方法,它會插入、修改,最後刪除資料集中的資料列。
此範例的程式碼檔案名稱為 UpdateResultSet.java,可以在下列位置找到:
\<installation directory>\sqljdbc_<version>\<language>\samples\resultsets
需求
若要執行此範例應用程式,您必須將 Classpath 設定為包含 mssql-jdbc jar 檔案。 您也必須存取 AdventureWorks2022 範例資料庫。 如需如何設定 classpath 的詳細資訊,請參閱使用 JDBC 驅動程式。
注意
適用於 SQL Server 的 Microsoft JDBC 驅動程式提供 mssql-jdbc 類別庫檔案,可根據您慣用的 Java Runtime Environment (JRE) 設定使用。 如需選擇哪個 JAR 檔案的詳細資訊,請參閱 JDBC Driver 的系統需求。
範例
範例程式碼會連線到 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();
}
}
}