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

Пример JDBC для коммита и откатов

Ниже приведен пример, который используетcommitиrollbackОписание находится в разделе JDBC-уроки.

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

Скопируйте и вставьте следующий пример в 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;
   Statement stmt = null;
   try{
      // шаг 2: зарегистрируйте JDBC драйвер
      Class.forName("com.mysql.jdbc.Driver");
      // шаг 3: установите соединение
      System.out.println("Подключение к базе данных...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      // шаг 4: установите автоматическую подачу на false.
      conn.setAutoCommit(false);
      // шаг 5: выполните запрос для создания выражения
      // необходимые параметры для примера RS.
      System.out.println("Создание выражения...");
      stmt = conn.createStatement(
                           ResultSet.TYPE_SCROLL_INSENSITIVE,
                           ResultSet.CONCUR_UPDATABLE);
     
      // шаг 6: вставим одну строку в таблицу "Сотрудники"
      System.out.println("Вставка одной строки....");
      String SQL = "INSERT INTO Employees " +
                    "VALUES (106, 20, 'Rita', 'Tez')";
      stmt.executeUpdate(SQL);  
      // шаг 7: добавим еще одну строку в таблицу "Сотрудники"
      SQL = "INSERT INTO Employees " +
                    "VALUES (107, 22, 'Sita', 'Singh')";
      stmt.executeUpdate(SQL);
      // шаг 8: здесь подаем данные.
      System.out.println("Подтверждение данных здесь....");
      conn.commit();
	  
	  // шаг 9: сейчас перечислим все доступные записи.
      String sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);
      System.out.println("List result set for reference....");
      printRs(rs);
      //步骤10:清理环境
      rs.close();
      stmt.close();
      conn.close();
   }catch(SQLException se){
      //处理JDBC错误
      se.printStackTrace();
      // 如果有错误,则回滚更改。
      System.out.println("Rolling back data here....");
	  try{
		 if(conn!=null)
            conn.rollback();
      }
         se2.printStackTrace();
      //结束尝试
   }
      //处理Class.forName的错误
      e.printStackTrace();
   }
      //用于关闭资源
      try{
         if(stmt!=null)
            stmt.close();
      }
      
      }
      try{
         if(conn!=null)
            conn.close();
      }catch(SQLException se){
         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: " + age);
         System.out.print(", First: " + first);
         System.out.println(", Last: " + last);
     }
     System.out.println();
   //Конец printRs()
//Конец JDBCExample

Теперь давайте скомпилируем приведенный выше пример, как показано ниже:

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

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

C:\>java JDBCExample
Соединение с базой данных...
Создание указания...
Вставка одной строки...
Коммити данных здесь...
Список результатов набора данных для справки...
ID: 100, Возраст: 18, Имя: Zara, Фамилия: Ali
ID: 101, Возраст: 25, Имя: Mahnaz, Фамилия: Fatma
ID: 102, Возраст: 30, Имя: Zaid, Фамилия: Khan
ID: 103, Возраст: 28, Имя: Sumit, Фамилия: Mittal
ID: 106, Возраст: 20, Имя: Rita, Фамилия: Tez
ID: 107, Возраст: 22, Имя: Sita, Фамилия: Singh
До свидания!
C:\>