Modification de l'exemple de données du jeu de résultats
Cet exemple d’application du pilote Microsoft JDBC pour SQL Server montre comment récupérer un jeu de données pouvant être mis à jour à partir d’une base de données SQL Server. Ensuite, en utilisant des méthodes de l’objet SQLServerResultSet, il insère, puis modifie et enfin supprime une ligne de données dans l’ensemble de données.
Le fichier de code de cet exemple est nommé UpdateResultSet.java et se trouve à l’emplacement suivant :
\<installation directory>\sqljdbc_<version>\<language>\samples\resultsets
Spécifications
Pour exécuter cet exemple d’application, définissez le classpath de façon à inclure le fichier jar mssql-jdbc. Vous devez également avoir accès à l’exemple de base de données AdventureWorks2022. Pour plus d’informations sur la façon de définir l’instruction classpath, consultez à l’aide du pilote JDBC.
Notes
Le Pilote Microsoft JDBC pour SQL Server fournit les fichiers bibliothèques de classes mssql-jdbc à utiliser en fonction des paramètres JRE (Java Runtime Environment) choisis. Pour plus d’informations sur le fichier JAR à choisir, voir Configuration requise pour le pilote JDBC.
Exemple
Le code établit une connexion à l’exemple de base de données AdventureWorks2022. Ensuite, à l’aide d’une instruction SQL avec l’objet SQLServerStatement , elle exécute l’instruction SQL et place les données qu’elle retourne dans un objet SQLServerResultSet pouvant être mis à jour.
Puis l’exemple de code utilise la méthode moveToInsertRow pour déplacer le curseur du jeu de résultats vers la ligne d’insertion. Il utilise ensuite une série de méthodes updateString pour insérer des données dans la nouvelle ligne. Après cela, il appelle la méthode insertRow pour conserver la nouvelle ligne de données dans la base de données.
Après avoir inséré la nouvelle ligne de données, l’exemple de code utilise une instruction SQL pour récupérer la ligne précédemment insérée. De là, il utilise la combinaison des méthodes updateString
et updateRow pour mettre à jour la ligne de données et la réenregistrer dans la base de données.
Enfin, l’exemple de code extrait la ligne de données précédemment mise à jour, puis la supprime de la base de données avec la méthode 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();
}
}
}