程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java編程中應用JDBC API銜接數據庫和創立法式的辦法

Java編程中應用JDBC API銜接數據庫和創立法式的辦法

編輯:關於JAVA

Java編程中應用JDBC API銜接數據庫和創立法式的辦法。本站提示廣大學習愛好者:(Java編程中應用JDBC API銜接數據庫和創立法式的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java編程中應用JDBC API銜接數據庫和創立法式的辦法正文


JDBC銜接數據庫

觸及到樹立一個JDBC銜接的編程是相當簡略的。上面是這些簡略的四個步調:

  1. 導入JDBC包: 添加import語句到Java法式導入所需的類在Java代碼中。
  2. 注冊JDBC驅動法式:這一步會招致JVM加載所需的驅動法式完成到內存中,是以它可以完成JDBC要求。
  3. 數據庫URL制訂:這是創立格局准確的地址指向到要銜接的數據庫。
  4. 創立銜接對象:最初,代碼挪用DriverManager對象的getConnection()辦法來樹立現實的數據庫銜接。
  5. 導入JDBC包:
    import 語句告知Java編譯器在哪裡可以找到在代碼中援用,並放置在您的源代碼最開端的類。

    應用尺度的JDBC包,它許可選擇,拔出,更新和SQL表中刪除數據,添加以下出口到您的源代碼:

    import java.sql.* ; // for standard JDBC programs
    import java.math.* ; // for BigDecimal and BigInteger support
    

    注冊JDBC驅動法式:
    應用它之前,必需注冊你的驅動法式在法式。注冊驅動法式是由Oracle驅動法式的類文件被加載到內存中以便它可以被用作JDBC接口的完成進程。

    須要做這個注冊只能在你的法式一次。可以經由過程以下兩種方法之一注冊一個驅動法式。

    辦法(I)- Class.forName():
    注冊一個驅動法式中最經常使用的辦法是應用Java的Class.forName()辦法來靜態加載驅動法式的類文件到內存中,它會主動將其注冊。這類辦法是可取的,由於它許可使驅動注冊設置裝備擺設,便於攜帶。

    上面的示例應用Class.forName()來注冊Oracle驅動法式:

    try {
      Class.forName("oracle.jdbc.driver.OracleDriver");
    }
    catch(ClassNotFoundException ex) {
      System.out.println("Error: unable to load driver class!");
      System.exit(1);
    }
    

    可使用getInstance()辦法來處理不兼容的JVM,但要編寫了兩個額定的破例情形以下:

    try {
      Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    }
    catch(ClassNotFoundException ex) {
      System.out.println("Error: unable to load driver class!");
      System.exit(1);
    catch(IllegalAccessException ex) {
      System.out.println("Error: access problem while loading!");
      System.exit(2);
    catch(InstantiationException ex) {
      System.out.println("Error: unable to instantiate driver!");
      System.exit(3);
    }
    

    辦法(二) - DriverManager.registerDriver():
    可以用它來注冊一個驅動法式的第二種辦法是應用staticDriverManager.registerDriver()辦法。

    應當,假如應用的是不兼容的JDK JVM,好比微軟供給一個應用registerDriver()辦法。

    上面的示例應用registerDriver()來注冊Oracle驅動法式:

    try {
      Driver myDriver = new oracle.jdbc.driver.OracleDriver();
      DriverManager.registerDriver( myDriver );
    }
    catch(ClassNotFoundException ex) {
      System.out.println("Error: unable to load driver class!");
      System.exit(1);
    }
    

    數據庫URL制訂:
    當加載的驅動法式,可以樹立法式中應用DriverManager.getConnection()辦法的銜接。為便利參考,讓列出了三個重載DriverManager.getConnection()辦法:

    1. getConnection(String url)
    2. getConnection(String url, Properties prop)
    3. getConnection(String url, String user, String password)
    4. 在這裡,每一個表單須要一個數據庫URL。數據庫的URL是指向數據庫地址。

      制訂一個數據庫URL是年夜多半用在樹立銜接相干。

      下表列出了上去風行的JDBC驅動法式名和數據庫的URL。

      RDBMS JDBC驅動法式的稱號 URL 格局

      MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname/ databaseName
      ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName
      DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:hostname:port Number/databaseName
      Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:hostname: port Number/databaseName
      

      以URL格局一切高亮的部門是靜態的,須要轉變只殘剩部門依照數據庫設置。

      創立銜接對象: 應用數據庫URL的用戶名和暗碼:
      上面三種情勢DriverManager.getConnection()辦法來創立一個銜接對象。getConnection()最經常使用情勢請求傳遞一個數據庫URL,用戶名 username和暗碼 password:

      對URL數據庫部門databaseName的值:假定應用的是Oracle的瘦驅動法式,須要指定一個主機:端口。

      假定有一台主機TCP/IP地址192.0.0.1 和主機名和Oracle監聽器被設置裝備擺設為在端口1521,數據庫稱號是EMP,然後完全的數據庫URL是:

      jdbc:oracle:thin:@amrood:1521:EMP
      

      如今,必需挪用恰當的用戶名和暗碼和getConnection()辦法來取得一個Connection對象,以下所示:

      String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
      String USER = "username";
      String PASS = "password"
      Connection conn = DriverManager.getConnection(URL, USER, PASS);
      

      只應用一個數據庫URL:
      第二種情勢 DriverManager.getConnection()辦法只須要一個數據庫URL:

      DriverManager.getConnection(String url);
      

      但是,在這類情形下,數據庫的URL,包含用戶名和暗碼,並具有以下的普通情勢:

      jdbc:oracle:driver:username/password@database
      

      所以下面的銜接可以創立以下:

      String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
      Connection conn = DriverManager.getConnection(URL);
      

      應用數據庫的URL和一個Properties對象:
      第三種情勢DriverManager.getConnection()辦法須要一個數據庫URL和一個Properties對象:

      DriverManager.getConnection(String url, Properties info);
      Properties對象,保留一組症結字 - 值對。它被用來挪用getConnection()辦法時驅動法式屬性傳遞給驅動法式。

      為了使經由過程後面的例子中所做的雷同的銜接,應用上面的代碼:

      import java.util.*;
      
      String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
      Properties info = new Properties( );
      info.put( "user", "username" );
      info.put( "password", "password" );
      
      Connection conn = DriverManager.getConnection(URL, info);
      
      

      封閉JDBC銜接:
      在JDBC法式的停止,它明白請求封閉一切的銜接到數據庫,以停止每一個數據庫會話。然則,假如忘了,Java渣滓搜集器會封閉銜接時,它會消除陳腐的對象。

      依托渣滓搜集,特殊是在數據庫編程,長短常差的編程習氣。應當老是在封閉與銜接對象聯系關系的close()辦法銜接的習氣。

      為了確保銜接被封閉,可以在代碼中的finally塊履行。 finally塊都邑履行,不論能否產生或也不破例。

      要封閉下面翻開的銜接,應當挪用close()辦法,以下所示:

      conn.close();
      顯式地封閉銜接DBMS勤儉資本。


      創立JDBC運用法式:
      有以下觸及構建JDBC運用法式的六個步調:

      1. 導入數據包 . 須要包含含有須要停止數據庫編程的JDBC類的包。年夜多半情形下,應用 import java.sql.*  便可以了.
      2. 注冊JDBC驅動法式. 須要初始化驅動法式,可以與數據庫翻開一個通訊通道。
      3. 翻開銜接. 須要應用DriverManager.getConnection() 辦法創立一個Connection對象,它代表與數據庫的物理銜接。
      4. 履行查詢 . 須要應用類型聲明的對象樹立並提交一個SQL語句到數據庫。
      5. 從成果集中提取數據 . 請求應用恰當的關於ResultSet.getXXX()辦法來檢索成果集的數據。
      6. 清算情況. 須要明白地封閉一切的數據庫資本絕對依附JVM的渣滓搜集。
      7. 示例代碼:
        這個典范的例子可以作為一個模板,在須要樹立JDBC運用法式。

        基於對情況和數據庫裝置在後面的章節中做此示例代碼已寫入。

        復制上面的例子FirstExample.java,編譯並運轉,以下所示:

        //STEP 1. Import required packages
        import java.sql.*;
        
        public class FirstExample {
          // JDBC driver name and database URL
          static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
          static final String DB_URL = "jdbc:mysql://localhost/EMP";
        
          // Database credentials
          static final String USER = "username";
          static final String PASS = "password";
          
          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 database...");
           conn = DriverManager.getConnection(DB_URL,USER,PASS);
        
           //STEP 4: Execute a query
           System.out.println("Creating statement...");
           stmt = conn.createStatement();
           String sql;
           sql = "SELECT id, first, last, age FROM Employees";
           ResultSet rs = stmt.executeQuery(sql);
        
           //STEP 5: Extract data from result set
           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);
           }
           //STEP 6: Clean-up environment
           rs.close();
           stmt.close();
           conn.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)
              stmt.close();
           }catch(SQLException se2){
           }// nothing we can do
           try{
             if(conn!=null)
              conn.close();
           }catch(SQLException se){
             se.printStackTrace();
           }//end finally try
          }//end try
          System.out.println("Goodbye!");
        }//end main
        }//end FirstExample
        
        

        如今來編譯下面的例子以下:

        C:>javac FirstExample.java
        

        當運轉FirstExample,它會發生以下成果:

        C:>java FirstExample
        
        Connecting to database...
        Creating statement...
        ID: 100, Age: 18, First: Zara, Last: Ali
        ID: 101, Age: 25, First: Mahnaz, Last: Fatma
        ID: 102, Age: 30, First: Zaid, Last: Khan
        ID: 103, Age: 28, First: Sumit, Last: Mittal
        
        


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved