English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JDBC 更新结果集示例

以下是使用Result Set教程中描述的ResultSet.CONCUR_UPDATABLEResultSet.TYPE_SCROLL_INSENSITIVE示例。本示例将说明对表的INSERT,UPDATE和DELETE操作。

应该注意的是,您正在处理的表应正确设置主键。

该示例代码是根据前几章中的环境和数据库设置编写的。

复制并粘贴以下示例到JDBCExample.java中,如下编译并运行:

//Étape1.导入所需的软件包
import java.sql.*;
public class JDBCExample {
   // JDBC驱动程序名称和数据库URL
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   //  数据库凭证
   static final String USER = "username";
   static final String PASS = "password";
   
 public static void main(String[] args) {
   Connection conn = null;
   try{
      //Étape2:注册JDBC驱动程序
      Class.forName("com.mysql.jdbc.Driver");
      //Étape3:Établir la connexion
      System.out.println("Connexion à la base de données...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //Étape4:Exécuter la requête pour créer la déclaration
      // Paramètres nécessaires pour l'exemple RS.
      System.out.println("Création de l'état...");
      Statement stmt = conn.createStatement(
                           ResultSet.TYPE_SCROLL_INSENSITIVE,
                           ResultSet.CONCUR_UPDATABLE);
     //Étape5:Exécuter la requête
      String sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);
      System.out.println("Liste des résultats pour référence....");
      printRs(rs);
      //Étape6:Parcourir le jeu de résultats en boucle et augmenter5d'âges
      //Se déplacer à la position BFR pour que le cycle while fonctionne normalement
      rs.beforeFirst();
      //Étape7:Extraire des données du jeu de résultats
      while(rs.next()){
         //Recherche par nom de colonne
         int newAge = rs.getInt("age") + 5;
         rs.updateDouble( "age", newAge );
         rs.updateRow();
      }
      System.out.println("Liste des résultats affichant les nouveaux âges...");
      printRs(rs);
      // Insérer un enregistrement dans le tableau.
      //Déplacer pour utiliser updateXXX() pour insérer une ligne et ajouter des données de colonne
      System.out.println("Insertion d'un nouveau enregistrement...");
      rs.moveToInsertRow();
      rs.updateInt("id",104);
      rs.updateString("first","John");
      rs.updateString("last","Paul");
      rs.updateInt("age",40);
      //Soumettre une ligne
      rs.insertRow();
      System.out.println("Liste des résultats affichant le nouveau jeu...");
      printRs(rs);
      
      // Supprimer le deuxième enregistrement de la table。
      // Positionner d'abord le curseur sur le deuxième enregistrement
      rs.absolute( 2 );
      System.out.println("Liste de l'enregistrement avant suppression...");
      //Recherche par nom de colonne
      int id  = rs.getInt("id");
      int age = rs.getInt("age");
      String first = rs.getString("first");
      String last = rs.getString("last");
      //Afficher la valeur
      System.out.print("ID: " + id);
      System.out.print(", Age: " + age);
      System.out.print(", First: " + first);
      System.out.println(", Last: " + last);
     //Suppression de la ligne
      rs.deleteRow();
      System.out.println("Liste des ensembles de résultats après \
                Suppression d'un enregistrement...");
      printRs(rs);
      //Étape8:Nettoyer l'environnement
      rs.close();
      stmt.close();
      conn.close();
   }catch(SQLException se){
      //Gérer l'erreur JDBC
      se.printStackTrace();
   }catch(Exception e){
      //Gérer l'erreur de Class.forName
      e.printStackTrace();
   }finally{
      //Pour fermer les ressources
      try{
         if(conn!=null)
            conn.close();
      }catch(SQLException se){
         se.printStackTrace();
      }
   }
   System.out.println("Au revoir !");
}//Fin de main
   public static void printRs(ResultSet rs) throws SQLException{
      //Assurons-nous que nous commençons par la première ligne
      rs.beforeFirst();
      while(rs.next()){
         //Recherche par nom de colonne
         int id  = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");
         //Afficher la valeur
         System.out.print("ID: " + id);
         System.out.print(", Age: " + age);
         System.out.print(", First: " + first);
         System.out.println(", Last: " + last);
     }
     System.out.println();
   }//Fin de printRs()
}//Fin de JDBCExample

Maintenant, compilons l'exemple ci-dessus comme suit :

C:\>javac JDBCExample.java
C:\>

Exécution en temps réelJDBCExampleIl produira les résultats suivants-

C:\>java JDBCExample
Connexion à la base de données...
Création de l'instruction...
Liste des ensembles de résultats pour référence....
ID: 100, Âge: 33, Premier: Zara, Dernier: Ali
ID: 101, Âge: 40, Premier: Mahnaz, Dernier: Fatma
ID: 102, Âge: 50, Premier: Zaid, Dernier: Khan
ID: 103, Âge: 45, Premier: Sumit, Dernier: Mittal
Liste des ensembles de résultats montrant les nouveaux âges...
ID: 100, Âge: 38, Premier: Zara, Dernier: Ali
ID: 101, Âge: 45, Premier: Mahnaz, Dernier: Fatma
ID: 102, Âge: 55, Premier: Zaid, Dernier: Khan
ID: 103, Âge: 50, Premier: Sumit, Dernier: Mittal
Insertion d'un nouvel enregistrement...
Liste des ensembles de résultats montrant le nouveau jeu...
ID: 100, Âge: 38, Premier: Zara, Dernier: Ali
ID: 101, Âge: 45, Premier: Mahnaz, Dernier: Fatma
ID: 102, Âge: 55, Premier: Zaid, Dernier: Khan
ID: 103, Âge: 50, Premier: Sumit, Dernier: Mittal
ID: 104, Âge: 40, Premier: John, Dernier: Paul
Liste de l'enregistrement avant la suppression...
ID: 101, Âge: 45, Premier: Mahnaz, Dernier: Fatma
Liste des ensembles de résultats après la suppression d'un enregistrement...
ID: 100, Âge: 38, Premier: Zara, Dernier: Ali
ID: 102, Âge: 55, Premier: Zaid, Dernier: Khan
ID: 103, Âge: 50, Premier: Sumit, Dernier: Mittal
ID: 104, Âge: 40, Premier: John, Dernier: Paul
Au revoir !
C:\>