- 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 應用程式對錶中的記錄進行排序的示例。它將使用asc和desc關鍵字對記錄進行升序或降序排序。在執行以下示例之前,請確保您已準備好以下內容:-
要執行以下示例,您可以將使用者名稱和密碼替換為您實際的使用者名稱和密碼。
您的 MySQL 或您正在使用的任何資料庫都已啟動並正在執行。
必要步驟
使用 JDBC 應用程式建立新資料庫需要以下步驟:-
匯入包 - 需要包含用於資料庫程式設計的 JDBC 類所在的包。大多數情況下,使用import java.sql.*就足夠了。
開啟連線 - 需要使用DriverManager.getConnection()方法建立一個 Connection 物件,該物件表示與資料庫伺服器的物理連線。
執行查詢 - 需要使用 Statement 型別的物件來構建和提交 SQL 語句以對錶中的記錄進行排序。這些查詢利用asc和desc子句對資料進行升序和降序排序。
清理環境 - try with resources 自動關閉資源。
示例:對錶的記錄進行排序
在此示例中,我們有四個靜態字串,分別包含資料庫連線 URL、使用者名稱、密碼和 SELECT 查詢。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備就緒後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備並執行了對 REGISTRATION 表的 SELECT 查詢,方法是呼叫 statement.executeQuery() 方法,在該方法中我們添加了對姓名的升序排序 Order By 子句。然後使用 executeQuery(),所有記錄都被獲取並存儲在 ResultSet 物件中。迭代 ResultSet 並列印所有記錄。
下一步,我們準備並執行了對 REGISTRATION 表的 SELECT 查詢,方法是呼叫 statement.executeQuery() 方法,在該方法中我們添加了對姓名的降序排序 Order By 子句。然後使用 executeQuery(),所有記錄都被獲取並存儲在 ResultSet 物件中。迭代 ResultSet 並列印所有記錄。
將以下示例複製並貼上到 JDBCExample.java 中,編譯並執行如下:-
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
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";
static final String QUERY = "SELECT id, first, last, age FROM Registration";
public static void main(String[] args) {
// Open a connection
try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();) {
System.out.println("Fetching records in ascending order...");
ResultSet rs = stmt.executeQuery(QUERY + " ORDER BY first ASC");
while(rs.next()){
//Display values
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("Fetching records in descending order...");
rs = stmt.executeQuery(QUERY + " ORDER BY first DESC");
while(rs.next()){
//Display values
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"));
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
現在讓我們編譯以上示例,如下所示:-
C:\>javac JDBCExample.java C:\>
當您執行JDBCExample時,它會產生以下結果:-
C:\>java JDBCExample Fetching records in ascending order... ID: 103, Age: 28, First: Sumit, Last: Mittal ID: 102, Age: 30, First: Zaid, Last: Khan ID: 100, Age: 30, First: Zara, Last: Ali Fetching records in descending order... ID: 100, Age: 30, First: Zara, Last: Ali ID: 102, Age: 30, First: Zaid, Last: Khan ID: 103, Age: 28, First: Sumit, Last: Mittal C:\>
示例:對錶的記錄基於兩列進行排序
在此示例中,我們有三個靜態字串,分別包含資料庫連線 URL、使用者名稱和密碼。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備就緒後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備並執行了對 EMPLOYEES 表的 SELECT 查詢,方法是呼叫 statement.executeQuery() 方法,在該方法中我們添加了對 id 和 age 的升序排序 Order By 子句。然後使用 executeQuery(),所有記錄都被獲取並存儲在 ResultSet 物件中。迭代 ResultSet 並列印所有記錄。
將以下示例複製並貼上到 JDBCExample.java 中,編譯並執行如下:-
import java.sql.*;
// This class demonstrates use ORDER BY with 2 columns.
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_qry = " select * from employees order by id, age ";
ResultSet rs = stmt.executeQuery(sel_qry);
System.out.println("Displaying records from EMPLOYEES table sorted by id, age" );
System.out.println("-------------------------------------------------------");
while(rs.next()){
System.out.print(" ID: " + rs.getInt(1));
System.out.print(", AGE: " + rs.getInt(2));
System.out.print(", FirstName: " + rs.getString(3));
System.out.println(", LastName: " + rs.getString(4));
}
System.out.println("--------------------------------------------");
rs.close();
stmt.close();
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
現在讓我們編譯以上示例,如下所示:-
C:\>javac JDBCExample.java C:\>
當您執行JDBCExample時,它會產生以下結果:-
C:\>java JDBCExample Displaying records from EMPLOYEES table sorted by id, age ------------------------------------------------------- ID: 1, AGE: 50, FirstName: Shahbaz, LastName: Ali ID: 2, AGE: 25, FirstName: Mahnaz, LastName: Fatma ID: 4, AGE: 28, FirstName: Sumit, LastName: Mittal ID: 21, AGE: 35, FirstName: Jeevan, LastName: Rao ID: 22, AGE: 40, FirstName: Dinesh, LastName: Kumar ID: 25, AGE: 35, FirstName: Jeevan, LastName: Rao ID: 26, AGE: 35, FirstName: Aditya, LastName: Chaube ID: 34, AGE: 45, FirstName: Ahmed, LastName: Ali ID: 35, AGE: 51, FirstName: Raksha, LastName: Agarwal -------------------------------------------- C:\>
示例:對錶的記錄進行升序和降序排序
在此示例中,我們有三個靜態字串,分別包含資料庫連線 URL、使用者名稱和密碼。現在使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備就緒後,我們使用 createStatement() 方法準備了一個 Statement 物件。下一步,我們準備並執行了對 EMPLOYEES 表的 SELECT 查詢,方法是呼叫 statement.executeQuery() 方法,在該方法中我們添加了對 age 的升序排序和對姓氏的降序排序 Order By 子句。然後使用 executeQuery(),所有記錄都被獲取並存儲在 ResultSet 物件中。迭代 ResultSet 並列印所有記錄。
將以下示例複製並貼上到 JDBCExample.java 中,編譯並執行如下:-
import java.sql.*;
// This class demonstrates ORDER BY 2 columns one ASC, one DESC
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_qry = " select * from employees order by age asc, last desc";
ResultSet rs = stmt.executeQuery(sel_qry);
System.out.println("Displaying records from EMPLOYEES table sorted by age(ASC) and last name (DESC)." );
System.out.println("-------------------------------------------------------");
while(rs.next()){
System.out.print(" ID: " + rs.getInt(1));
System.out.print(", AGE: " + rs.getInt(2));
System.out.print(", FirstName: " + rs.getString(3));
System.out.println(", LastName: " + rs.getString(4));
}
System.out.println("--------------------------------------------");
rs.close();
stmt.close();
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
現在讓我們編譯以上示例,如下所示:-
C:\>javac JDBCExample.java C:\>
當您執行JDBCExample時,它會產生以下結果:-
C:\>java JDBCExample Displaying records from EMPLOYEES table sorted by age(ASC) and last name (DESC). ------------------------------------------------------- ID: 2, AGE: 25, FirstName: Mahnaz, LastName: Fatma ID: 4, AGE: 28, FirstName: Sumit, LastName: Mittal ID: 21, AGE: 35, FirstName: Jeevan, LastName: Rao ID: 25, AGE: 35, FirstName: Jeevan, LastName: Rao ID: 26, AGE: 35, FirstName: Aditya, LastName: Chaube ID: 22, AGE: 40, FirstName: Dinesh, LastName: Kumar ID: 34, AGE: 45, FirstName: Ahmed, LastName: Ali ID: 1, AGE: 50, FirstName: Shahbaz, LastName: Ali ID: 35, AGE: 51, FirstName: Raksha, LastName: Agarwal -------------------------------------------- C:\>