鍍金池/ 教程/ Java/ JDBC排序數(shù)據(jù)實(shí)例
JDBC Like子句實(shí)例
JDBC異常
JDBC排序數(shù)據(jù)實(shí)例
JDBC事務(wù)保存點(diǎn)(setSavepoint, releaseSavepoint )實(shí)例
JDBC結(jié)果集
JDBC Statement對(duì)象執(zhí)行批量處理實(shí)例
JDBC事務(wù)
JDBC SQL語(yǔ)法
JDBC快速入門教程
JDBC創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例
JDBC流ASCII和二進(jìn)制數(shù)據(jù)
JDBC刪除表實(shí)例
JDBC Statements, PreparedStatement和CallableStatement語(yǔ)句
JDBC WHERE子句條件實(shí)例
JDBC插入數(shù)據(jù)實(shí)例
JDBC驅(qū)動(dòng)程序類型
JDBC環(huán)境配置
JDBC數(shù)據(jù)庫(kù)連接
JDBC刪除數(shù)據(jù)實(shí)例
JDBC PrepareStatement對(duì)象執(zhí)行批量處理實(shí)例
JDBC刪除數(shù)據(jù)庫(kù)實(shí)例
JDBC事務(wù)提交/回滾實(shí)例
JDBC更新數(shù)據(jù)實(shí)例
JDBC存儲(chǔ)過程調(diào)用
JDBC教程
JDBC批量處理
JDBC創(chuàng)建表實(shí)例
JDBC數(shù)據(jù)類型
JDBC是什么?
JDBC簡(jiǎn)單示例代碼
JDBC選擇數(shù)據(jù)庫(kù)實(shí)例
JDBC查詢數(shù)據(jù)實(shí)例

JDBC排序數(shù)據(jù)實(shí)例

在本教程將演示如何在JDBC應(yīng)用程序中,從數(shù)據(jù)庫(kù)表中查詢數(shù)據(jù)記錄,在查詢語(yǔ)句中將使用ascdesc關(guān)鍵字按升序或降序?qū)τ涗涍M(jìn)行排序。在執(zhí)行以下示例之前,請(qǐng)確保您已經(jīng)準(zhǔn)備好以下操作:

  • 具有數(shù)據(jù)庫(kù)管理員權(quán)限,以在給定模式的數(shù)據(jù)庫(kù)表中查詢數(shù)據(jù)記錄。 要執(zhí)行以下示例,需要用實(shí)際用戶名和密碼替換這里用戶名(username)和密碼(password)。
  • MySQL或數(shù)據(jù)庫(kù)已啟動(dòng)并運(yùn)行。

所需步驟

使用JDBC應(yīng)用程序查詢表中數(shù)據(jù)記錄需要以下步驟:

  • 導(dǎo)入包:需要包含包含數(shù)據(jù)庫(kù)編程所需的JDBC類的包。 大多數(shù)情況下,使用import java.sql.*就足夠了。

  • 注冊(cè)JDBC驅(qū)動(dòng)程序:需要初始化驅(qū)動(dòng)程序,以便可以程序中打開數(shù)據(jù)庫(kù)的通信通道。

  • 打開連接:需要使用DriverManager.getConnection()方法來創(chuàng)建一個(gè)Connection對(duì)象,它表示與數(shù)據(jù)庫(kù)服務(wù)器的物理連接。

  • 執(zhí)行查詢:需要使用類型為Statement的對(duì)象來構(gòu)建和提交SQL語(yǔ)句來對(duì)表中的記錄進(jìn)行排序。 這些查詢使用ascdesc子句對(duì)升序和降序進(jìn)行數(shù)據(jù)排序。

  • 清理環(huán)境:需要明確地關(guān)閉所有數(shù)據(jù)庫(kù)資源,而不依賴于JVM的垃圾收集。

示例代碼

復(fù)制以下示例代碼保存到文件:SelectSortingData.java中,然后編譯并運(yùn)行如下 -

//STEP 1. Import required packages
// See more detail at http://www.yiibai.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

執(zhí)行上面代碼,如下 -

## 可先創(chuàng)建表或插入數(shù)據(jù) -
## 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>