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

Пример JDBC для обновления результатов набора данных

Ниже приведен пример использования JDBC для обновления результатов набора данных, описанного в учебнике по Result Set.ResultSet.CONCUR_UPDATABLEиResultSet.TYPE_SCROLL_INSENSITIVEПример. Этот пример объясняет операции INSERT, UPDATE и DELETE на таблице.

Следует отметить, что таблица, с которой вы работаете, должна быть правильно настроена с ключом PRIMARY.

Этот пример кода написан на основе настроек环境和 базы данных в предыдущих главах.

Копируйте и вставляйте следующий пример в JDBCExample.java, как компилируйте и запускайте:

//Шаг 1. Импорт необходимых пакетов
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{
      //Шаг 2: Регистрация JDBC драйвера
      Class.forName("com.mysql.jdbc.Driver");
      //Шаг 3: Установление соединения
      System.out.println("Подключение к базе данных...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //Шаг 4: Выполнение запроса для создания утверждения
      // Обязательные параметры примера RS.
      System.out.println("Создание утверждения...");
      Statement stmt = conn.createStatement(
                           ResultSet.TYPE_SCROLL_INSENSITIVE,
                           ResultSet.CONCUR_UPDATABLE);
     //Шаг 5: Выполните запрос
      String sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);
      System.out.println("Список результатов для справки....");
      printRs(rs);
      //Шаг 6: Пересмотрите результаты и увеличьте возраст на 5
      //Переместитесь в BFR, чтобы цикл while работал normalmente
      rs.beforeFirst();
      //Шаг 7: Извлечь данные из результатов
      while(rs.next()){
         //Поиск по имени столбца
         int newAge = rs.getInt("age") + 5;
         rs.updateDouble("age",newAge);
         rs.updateRow();
      }
      System.out.println("Список результатов, показывающих новые ages...");
      printRs(rs);
      //Вставьте новую запись в таблицу.
      //Переместитесь, чтобы использовать updateXXX() для вставки строки и добавления данных столбца
      System.out.println("Вставка новой записи...");
      rs.moveToInsertRow();
      rs.updateInt("id",104);
      rs.updateString("first","John");
      rs.updateString("last","Paul");
      rs.updateInt("age",40);
      //Подтвердите строку
      rs.insertRow();
      System.out.println("Список результатов, показывающих новый набор...");
      printRs(rs);
      
      //Удалите第二条 record из таблицы.
      //Сначала установите положение на第二条record
      rs.absolute(2);
      System.out.println("Список записи перед удалением...");
      //Поиск по имени столбца
      int id = rs.getInt("id");
      int age = rs.getInt("age");
      String first = rs.getString("first");
      String last = rs.getString("last");
      //Отображение значений
      System.out.print("ID: " + id);
      System.out.print(", Возраст: " + age);
      System.out.print(", Первый: " + first);
      System.out.println(", Последний: " + last);
     //Удаление строки
      rs.deleteRow();
      System.out.println("Список результатов после ",)
                удаление одной записи...
      printRs(rs);
      //Шаг 8: очистка окружающей среды
      rs.close();
      stmt.close();
      conn.close();
   }
      //Обработка JDBC ошибок
      se.printStackTrace();
   }
      //Обработка ошибки Class.forName
      finally{
   }
      //Для закрытия ресурсов
      try{
         if(conn!=null)
            conn.close();
      }
         se.printStackTrace();
      }
   }
   System.out.println("Goodbye!");
//Конец main
   public static void printRs(ResultSet rs) throws SQLException{
      //Убедитесь, что мы начинаем с первой строки
      rs.beforeFirst();
      while(rs.next()){
         //Поиск по имени столбца
         int id = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");
         //Отображение значений
         System.out.print("ID: " + id);
         System.out.print(", Возраст: " + age);
         System.out.print(", Первый: " + first);
         System.out.println(", Последний: " + last);
     }
     System.out.println();
   //Конец printRs()
//Конец JDBCExample

Теперь давайте скомпилируем следующий пример:

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

во время выполненияJDBCExampleОн произведет следующие результаты:

C:\>java JDBCExample
Подключение к базе данных...
Создание запроса...
Список результатов для ознакомления...
ID: 100, Возраст: 33, Имя: Zara, Фамилия: Ali
ID: 101, Возраст: 40, Имя: Mahnaz, Фамилия: Fatma
ID: 102, Возраст: 50, Имя: Zaid, Фамилия: Khan
ID: 103, Возраст: 45, Имя: Sumit, Фамилия: Mittal
Список результатов, показывающий новые данные...
ID: 100, Возраст: 38, Имя: Zara, Фамилия: Ali
ID: 101, Возраст: 45, Имя: Mahnaz, Фамилия: Fatma
ID: 102, Возраст: 55, Имя: Zaid, Фамилия: Khan
ID: 103, Возраст: 50, Имя: Sumit, Фамилия: Mittal
Вставка новой записи...
Список результатов, показывающий новые данные...
ID: 100, Возраст: 38, Имя: Zara, Фамилия: Ali
ID: 101, Возраст: 45, Имя: Mahnaz, Фамилия: Fatma
ID: 102, Возраст: 55, Имя: Zaid, Фамилия: Khan
ID: 103, Возраст: 50, Имя: Sumit, Фамилия: Mittal
ID: 104, Возраст: 40, Имя: John, Фамилия: Paul
Список записей до удаления...
ID: 101, Возраст: 45, Имя: Mahnaz, Фамилия: Fatma
Список результатов после удаления одной записи...
ID: 100, Возраст: 38, Имя: Zara, Фамилия: Ali
ID: 102, Возраст: 55, Имя: Zaid, Фамилия: Khan
ID: 103, Возраст: 50, Имя: Sumit, Фамилия: Mittal
ID: 104, Возраст: 40, Имя: John, Фамилия: Paul
До свидания!
C:\>