- JDBC 教程
- JDBC - 首頁
- JDBC - 簡介
- JDBC - SQL 語法
- JDBC - 環境
- JDBC - 示例程式碼
- JDBC - 驅動程式型別
- JDBC - 連線
- JDBC - 語句
- JDBC - 結果集
- JDBC - 資料型別
- JDBC - 事務
- JDBC - 異常
- JDBC - 批處理
- JDBC - 儲存過程
- JDBC - 資料流
- JDBC - RowSet
- JDBC - 複製資料庫
- JDBC - ACID 屬性
- JDBC - 連線池
- JDBC 示例
- JDBC - 建立資料庫
- JDBC - 選擇資料庫
- JDBC - 刪除資料庫
- JDBC - 建立表
- JDBC - 刪除表
- JDBC - 插入記錄
- JDBC - 選擇記錄
- JDBC - 更新記錄
- JDBC - 刪除記錄
- JDBC - WHERE 子句
- JDBC - LIKE 子句
- JDBC - 資料排序
- JDBC 有用資源
- JDBC - 常見問題解答
- JDBC - 快速指南
- JDBC - 有用資源
- JDBC - 討論
- 有用 - Java 教程
JDBC - 建立表
本章提供使用 JDBC 應用程式建立表、臨時表和複製表的示例。在執行以下示例之前,請確保已準備好以下內容:
要執行以下示例,您可以將使用者名稱和密碼替換為您實際的使用者名稱和密碼。
您的 MySQL 正在執行。
必要步驟
使用 JDBC 應用程式建立新資料庫需要以下步驟:
匯入包 - 需要包含用於資料庫程式設計所需的 JDBC 類所在的包。大多數情況下,使用import java.sql.*就足夠了。
開啟連線 - 需要使用DriverManager.getConnection()方法建立一個 Connection 物件,該物件表示與資料庫伺服器的物理連線。
執行查詢 - 需要使用 Statement 型別的物件來構建和提交 SQL 語句,以便在選定的資料庫中建立一個表。
清理環境 - try with resources 會自動關閉資源。
示例:建立表
在本例中,我們有三個靜態字串,包含資料庫連線 URL、使用者名稱、密碼。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備就緒後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備了一個 SQL 字串來建立一個新的 REGISTRATION 表,並透過呼叫 statement.executeUpdate() 方法在資料庫中建立了該表。
如果在連線到資料庫時發生任何異常,catch 塊將處理 SQLException 並列印堆疊跟蹤。
將以下示例複製並貼上到 TestApplication.java 中,編譯並執行如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestApplication {
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 = "CREATE TABLE REGISTRATION " +
"(id INTEGER not NULL, " +
" first VARCHAR(255), " +
" last VARCHAR(255), " +
" age INTEGER, " +
" PRIMARY KEY ( id ))";
stmt.executeUpdate(sql);
System.out.println("Created table in given database...");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
現在讓我們按照如下方式編譯上述示例:
C:\>javac TestApplication.java C:\>
執行TestApplication時,會產生以下結果:
C:\>java TestApplication Created table in given database... C:\>
示例:建立臨時表
我們可以建立一個臨時表,該表僅在活動會話期間存在。MySQL、SQL Server、Oracle 等都支援臨時表。
在本例中,我們有三個靜態字串,包含資料庫連線 URL、使用者名稱、密碼。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備就緒後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備了一個 SQL 字串來建立一個新的臨時表 EMPLOYEES_COPY,並透過呼叫 statement.execute() 方法在資料庫中建立了該表。
在下一行程式碼中,我們建立了一個查詢字串以獲取新建立的臨時表 EMPLOYEES_COPY 中的所有記錄。查詢使用 statement.executeQuery() 方法觸發,結果儲存在 ResultSet 中。迭代 ResultSet 以列印所有員工。
如果在連線到資料庫時發生任何異常,catch 塊將處理 SQLException 並列印堆疊跟蹤。
將以下示例複製並貼上到 TestApplication.java 中,編譯並執行如下:
import java.sql.*;
public class TestApplication {
static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
static final String USER = "guest";
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 QUERY1 = "CREATE TEMPORARY TABLE EMPLOYEES_COPY SELECT * FROM EMPLOYEES";
stmt.execute(QUERY1);
String QUERY2 = "SELECT * FROM EMPLOYEES_COPY";
ResultSet rs = stmt.executeQuery(QUERY2);
while (rs.next()){
System.out.print("Id: " + rs.getInt("id"));
System.out.print(" Age: " + rs.getInt("age"));
System.out.print(" First: " + rs.getString("first"));
System.out.println(" Last: " + rs.getString("last"));
System.out.println("------------------------------------------");
}
}catch (SQLException e){
e.printStackTrace();
}
}
}
現在讓我們按照如下方式編譯上述示例:
C:\>javac TestApplication.java C:\>
執行TestApplication時,會產生以下結果:
C:\>java TestApplication Id: 1 Age: 18 First: Zara Last: Ali ------------------------------------------ Id: 2 Age: 25 First: Mahnaz Last: Fatma ------------------------------------------ Id: 3 Age: 20 First: Zaid Last: Khan ------------------------------------------ Id: 4 Age: 28 First: Sumit Last: Mittal ------------------------------------------ Id: 7 Age: 20 First: Rita Last: Tez ----------------------------------------- Id: 8 Age: 20 First: Sita Last: Singh ------------------------------------------ Id: 21 Age: 35 First: Jeevan Last: Rao ------------------------------------------ Id: 22 Age: 40 First: Aditya Last: Chaube ------------------------------------------ Id: 25 Age: 35 First: Jeevan Last: Rao ------------------------------------------ Id: 26 Age: 35 First: Aditya Last: Chaube ------------------------------------------ Id: 34 Age: 45 First: Ahmed Last: Ali ------------------------------------------ Id: 35 Age: 50 First: Raksha Last: Agarwal ------------------------------------------ C:\>
示例:建立複製表
我們可以建立一個與現有表完全相同的表。語法為
CREATE new_table_name LIKE orig_table_name;
執行該命令後,原始表中的所有資料都將複製到新表中。
在本例中,我們有三個靜態字串,包含資料庫連線 URL、使用者名稱、密碼。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備就緒後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備了一個 SQL 字串來建立一個新的複製表 EMPLOYEES_O,並透過呼叫 statement.execute() 方法在資料庫中建立了該表。
在下一行程式碼中,我們建立了一個查詢字串以獲取新建立的複製表 EMPLOYEES_O 中的所有記錄。查詢使用 statement.executeQuery() 方法觸發,結果儲存在 ResultSet 中。迭代 ResultSet 以列印所有員工。
如果在連線到資料庫時發生任何異常,catch 塊將處理 SQLException 並列印堆疊跟蹤。
將以下示例複製並貼上到 TestApplication.java 中,編譯並執行如下:
import java.sql.*;
// This class demonstrates the way of creating a table which is exactly similar to another table.
public class TestApplication {
static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
static final String USER = "guest";
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 QUERY1 = "CREATE TABLE EMPLOYEES_O LIKE EMPLOYEES";
stmt.execute(QUERY1);
ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEES");
System.out.println("Displaying records from EMPLOYEES_O");
while (rs.next()){
System.out.print("Id: " + rs.getInt("id"));
System.out.print(" Age: " + rs.getInt("age"));
System.out.print(" First: " + rs.getString("first"));
System.out.println(" Last: " + rs.getString("last"));
System.out.println("------------------------------------------");
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
現在讓我們按照如下方式編譯上述示例:
C:\>javac TestApplication.java C:\>
執行TestApplication時,會產生以下結果:
C:\>java TestApplication Displaying records from EMPLOYEES_O Id: 1 Age: 18 First: Zara Last: Ali ------------------------------------------ Id: 2 Age: 25 First: Mahnaz Last: Fatma ------------------------------------------ Id: 3 Age: 20 First: Zaid Last: Khan ------------------------------------------ Id: 4 Age: 28 First: Sumit Last: Mittal ------------------------------------------ Id: 7 Age: 20 First: Rita Last: Tez ------------------------------------------ Id: 8 Age: 20 First: Sita Last: Singh ------------------------------------------ Id: 21 Age: 35 First: Jeevan Last: Rao ------------------------------------------ Id: 22 Age: 40 First: Aditya Last: Chaube ----------------------------------------- Id: 25 Age: 35 First: Jeevan Last: Rao ------------------------------------------ Id: 26 Age: 35 First: Aditya Last: Chaube ------------------------------------------ Id: 34 Age: 45 First: Ahmed Last: Ali ------------------------------------------ Id: 35 Age: 50 First: Raksha Last: Agarwal ------------------------------------------ C:\>