JDBC - 刪除表



本章提供使用 JDBC 應用程式刪除表、如果存在則刪除表以及截斷表的示例。在執行以下示例之前,請確保已準備好以下內容:

  • 要執行以下示例,您可以將使用者名稱密碼替換為您實際的使用者名稱和密碼。

  • 您的 MySQL 或您正在使用的任何資料庫正在執行。

注意重新格式化 JDBC 教程這是一個嚴重的操作,您必須在繼續刪除表之前做出堅定的決定,因為您表中的所有內容都將丟失。

必需步驟

使用 JDBC 應用程式建立新資料庫需要以下步驟:

  • 匯入包 - 需要包含包含資料庫程式設計所需 JDBC 類的包。大多數情況下,使用import java.sql.* 就足夠了。

  • 開啟連線 - 需要使用DriverManager.getConnection()方法建立一個 Connection 物件,該物件表示與資料庫伺服器的物理連線。

  • 執行查詢重新格式化 JDBC 教程需要使用 Statement 型別的物件來構建和提交 SQL 語句以刪除所選資料庫中的表。

  • 清理環境重新格式化 JDBC 教程 try with resources 會自動關閉資源。

示例:刪除表

我們需要擁有 DROP 許可權才能執行 DROP TABLE 命令。

在這個例子中,我們有三個靜態字串,包含資料庫連線 URL、使用者名稱和密碼。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備好後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備了一個 SQL 字串來透過呼叫 statement.executeUpdate() 方法刪除 REGISTRATION 表。

如果在連線到資料庫時出現任何異常,catch 塊會處理 SQLException 並列印堆疊跟蹤。

將以下示例複製並貼上到 JDBCExample.java 中,然後編譯並執行如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCExample {
   static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
   static final String USER = "guest";
   static final String PASS = "guest123";

   public static void main(String[] args) {
      // Open a connection
      try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();
      ) {		      
         String sql = "DROP TABLE REGISTRATION";
         stmt.executeUpdate(sql);
         System.out.println("Table deleted in given database...");   	  
      } catch (SQLException e) {
         e.printStackTrace();
      } 
   }
}

現在讓我們按如下方式編譯上面的示例:

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

執行JDBCExample時,會產生以下結果:

C:\>java JDBCExample
Table deleted in given database...
C:\>

示例:如果存在則刪除表

可以使用以下命令刪除表。如果表不存在,此命令將引發錯誤。

DROP TABLE table_name

如果我們在刪除表之前進行檢查,則不會引發錯誤,並且僅在表存在時才刪除表。

DROP TABLE IF EXISTS table_name

在這個例子中,我們有三個靜態字串,包含資料庫連線 URL、使用者名稱和密碼。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備好後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備了一個 SQL 字串來透過呼叫 statement.execute() 方法刪除 sampledb1 表。

刪除表後,我們列印狀態並執行另一個查詢以顯示給定資料庫中的所有表,並列印所有剩餘的表。

如果在連線到資料庫時出現任何異常,catch 塊會處理 SQLException 並列印堆疊跟蹤。

將以下示例複製並貼上到 JDBCExample.java 中,然後編譯並執行如下:

import java.sql.*;

// This file demonstrates use of DROP TABLE IF EXISTS command
public class JDBCExample {

   static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
   static final String USER = "root";
   static final String PASS = "guest123";

   public static void main(String args[]) {
      try{
         Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();
         String QUERY = "DROP TABLE IF EXISTS sampledb1";
         stmt.execute(QUERY);

         System.out.println("Table sampledb1 dropped successfully.");
         System.out.println("----------------------------------------");
         ResultSet rs = stmt.executeQuery("show tables");
         System.out.println("List of tables");
         System.out.println("----------------------------------------");
         while(rs.next()){
            System.out.println(rs.getString(1));
         }
      }catch (SQLException e){
         e.printStackTrace();
      }
   }
}

現在讓我們按如下方式編譯上面的示例:

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

執行JDBCExample時,會產生以下結果:

C:\>java JDBCExample
Table sampledb1 dropped successfully.
----------------------------------------
List of tables
----------------------------------------
consumers
employees
employees_o
jdbc_blob_clob
officers
students

C:\>

示例:截斷表

DROP TABLE 不僅刪除所有表資料,還刪除表定義。另一方面,TRUNCATE TABLE 僅刪除表資料(或行)。

TRUNCATE TABLE table_name

在這個例子中,我們有三個靜態字串,包含資料庫連線 URL、使用者名稱和密碼。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備好後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備了一個 SQL 字串來透過呼叫 statement.executeQuery() 方法查詢 sampledb4 表以列印所有記錄。使用 ResultSet 中的結果,我們列印了所有記錄。

使用新的查詢截斷 sampledb4 表,我們使用 execute() 方法截斷了該表。現在,我們再次發出 select 查詢以獲取所有記錄。由於結果結果集為空,因此列印相應的訊息。

如果在連線到資料庫時出現任何異常,catch 塊會處理 SQLException 並列印堆疊跟蹤。

將以下示例複製並貼上到 JDBCExample.java 中,然後編譯並執行如下:

import java.sql.*;

public class JDBCExample {

   static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
   static final String USER = "root";
   static final String PASS = "guest123";

   public static void main(String args[]) {

      try{
         Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();
         String sel_query = "select * from sampledb4"; 
         ResultSet rs1 = stmt.executeQuery(sel_query);
         System.out.println("Rows from sampledb4");
         System.out.println("--------------------");
         while(rs1.next()){
            System.out.println("id: " + rs1.getInt(1));
            System.out.println("name: " + rs1.getString(2));
         }

         String QUERY = "TRUNCATE TABLE sampledb4";
         stmt.execute(QUERY);

         System.out.println("Table sampledb4 rows successfully deleted.");
         System.out.println("----------------------------------------");
         System.out.println(" Doing a select on sampledb4...");
         rs1 = stmt.executeQuery(sel_query);
         if (!rs1.next()){
            System.out.println(" **** ResultSet is empty *****"); 
         }
      }catch(SQLException e){
         e.printStackTrace();
      }
   }
}

現在讓我們按如下方式編譯上面的示例:

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

執行JDBCExample時,會產生以下結果:

C:\>java JDBCExample
Rows from sampledb4
--------------------
id: 1
name: Gandhi
id: 2
name: marx
Table sampledb4 rows successfully deleted.
----------------------------------------
 Doing a select on sampledb4.
 **** ResultSet is empty *****

C:\>
廣告