JDBC資料庫編程,jdbc編程書籍

來源:互聯網
上載者:User

JDBC資料庫編程,jdbc編程書籍

***********************************************聲明******************************************************

      原創作品,出自 “曉風殘月xj” 部落格,歡迎轉載,轉載時請務必註明出處(http://blog.csdn.net/xiaofengcanyuexj)。

      由於各種原因,可能存在諸多不足,歡迎斧正!

*********************************************************************************************************

      最近在自學MySQL資料庫,同時將來職場上的開發語言為Java,所以就嘗試在eclipse環境下寫個小的交易處理的資料庫程式。在這裡談談Java MySQL資料庫應用程式的開發。首先應該在本地機器上安裝MySQL資料庫,具體安裝過程見新手上路中提供的連結;然後最好安裝輔助的視覺化檢視:HeidiSQL,具體過程見HeidiSQL文中提供的連結。然互就是MySQL JDBC驅動的安裝了,在這裡提供一個連結:MySQL JDBC驅動 。

     按照上述的步驟,剩下的就是應用程式的編寫,JDBC編程中相關流程是通用的,應該著重看看,在此我談談我的理解。

      JDBC: Java database connection。JDBC是一組編程介面,資料庫系統的底層開發人員實現介面,Java開發人員調用JDBC提供的介面進行與資料庫的建立、連結、更新等操作。JDBC提供兩種API,分別是面向開發人員的API和面向底層的JDBC驅動程式API,底層主要通過直接的JDBC驅動和JDBC-ODBC橋驅動實現與資料庫的串連。
1)、載入資料庫驅動程式;

Class.forName(driver)//此處driver指驅動的路徑

2)、建立資料庫連接;

Connection con = DriverManager.getConnection(url, user, password);//以特定的使用者訪問指定的資料庫

3)、操作資料庫,執行SQL語句;

4)、斷開資料庫連接。


下面轉一段介紹, 完整java開發中JDBC串連資料庫代碼和步驟,在此表示感謝:

1、載入JDBC驅動程式:   
    在串連資料庫之前,首先要載入想要串連的資料庫的驅動到JVM(Java虛擬機器),這通過java.lang.Class類的靜態方法forName(String  className)實現。   
    例如:   

 try{       //載入MySql的驅動類       Class.forName("com.mysql.jdbc.Driver") ;       }catch(ClassNotFoundException e){       System.out.println("找不到驅動程式類 ,載入驅動失敗!");       e.printStackTrace() ;       }   
   成功載入後,會將Driver類的執行個體註冊到DriverManager類中。   
2、提供JDBC串連的URL   
   串連URL定義了串連資料庫時的協議、子協議、資料來源標識。書寫形式:協議:子協議:資料來源標識;協議:在JDBC中總是以jdbc開始;子協議:是橋串連的驅動程式或是資料庫管理系統名稱;資料來源標識:標記找到資料庫來源的地址與串連連接埠。   
   例如:(MySql的串連URL)   

 jdbc:mysql:         //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;      useUnicode=true:表示使用Unicode字元集。如果characterEncoding設定為      gb2312或GBK,本參數必須設定為true 。characterEncoding=gbk:字元編碼方式。   
 3、建立資料庫的串連   
    要串連資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,該對象就代表一個資料庫的串連。使用DriverManager的getConnectin(String url,String username,String password )方法傳入指定的欲串連的資料庫的路徑、資料庫的使用者名稱和密碼來獲得。   
     例如:
//串連MySql資料庫,使用者名稱和密碼都是root        String url = "jdbc:mysql://localhost:3306/test" ;         String username = "root" ;        String password = "root" ;        try{       Connection con =                 DriverManager.getConnection(url , username , password ) ;        }catch(SQLException se){       System.out.println("資料庫連接失敗!");       se.printStackTrace() ;        }   
 4、建立一個Statement   
    要執行SQL語句,必須獲得java.sql.Statement執行個體,Statement執行個體分為以下3種類型:   
      1)、執行靜態SQL語句。通常通過Statement執行個體實現。   
      2)、執行動態SQL語句。通常通過PreparedStatement執行個體實現。   
      3)、執行資料庫預存程序。通常通過CallableStatement執行個體實現。   
    具體的實現方式:      
       Statement stmt = con.createStatement() ;          PreparedStatement pstmt = con.prepareStatement(sql) ;          CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;   
 5、執行SQL語句   
   Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate和execute   
    1)、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句,返回一個結果集(ResultSet)對象。   
    2)、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等   
    3)、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的語句。   
   具體實現的代碼:   
    ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;       int rows = stmt.executeUpdate("INSERT INTO ...") ;       boolean flag = stmt.execute(String sql) ;   
 6、處理結果   
    兩種情況:   
     1)、執行更新返回的是本次操作影響到的記錄數。   
     2)、執行查詢返回的結果是一個ResultSet對象。   
     ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些行中資料的訪問。使用結果集(ResultSet)對象的存取方法擷取資料:   
 while(rs.next()){            String name = rs.getString("name") ;       String pass = rs.getString(1) ; // 此方法比較高效        }       (列是從左至右編號的,並且從列1開始)   
 7、關閉JDBC對象    
     操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:   
     1)、關閉記錄集   
     2)、關閉聲明   
     3)、關閉連線物件-資料庫 

     if(rs != null){   // 關閉記錄集           try{               rs.close() ;           }catch(SQLException e){               e.printStackTrace() ;           }             }             if(stmt != null){   // 關閉聲明           try{               stmt.close() ;           }catch(SQLException e){               e.printStackTrace() ;           }             }             if(conn != null){  // 關閉連線物件            try{               conn.close() ;            }catch(SQLException e){               e.printStackTrace() ;            }           } 
   

      上面那段文字介紹的挺好的,還有我自己也是初學,就直接轉載了,在此表示感謝!下面貼上我的一段入門級代碼,要畢業了,馬上要工作了,想多接觸一點工作上可能用得到的JDBC資料庫開發,有沒有時間寫個很大的項目,所以就只是描述一下大致流程,見笑了!

import java.sql.*;public class JDBCDemo {public static void main(String[] args) {String user = "root";String password = "199203211410xfcy";String url = "jdbc:mysql://localhost:3306/studentdb";//建立資料庫伺服器的地址String tableName = "student_information";String driver = "com.mysql.jdbc.Driver";String sqlSentence;Connection con = null;//連線物件Statement stmt = null;//操作對象ResultSet rs = null;//查詢結果try {Class.forName(driver);//載入資料庫驅動程式Driver類con = DriverManager.getConnection(url, user, password);//資料庫連接,以特定的使用者訪問指定的資料庫stmt = con.createStatement();sqlSentence = "insert into " + tableName + " values (9,'honey',21)";stmt.executeUpdate(sqlSentence);sqlSentence = "select * from " + tableName;rs = stmt.executeQuery(sqlSentence);ResultSetMetaData rsmd = rs.getMetaData();int j = 0;j = rsmd.getColumnCount();for (int k = 0; k < j; k++) {System.out.print(rsmd.getColumnName(k + 1));System.out.print("\t");}System.out.println();while (rs.next()) {for (int i = 0; i < j; i++) {System.out.print(rs.getString(i + 1));System.out.print("\t");}System.out.println();}} catch (ClassNotFoundException e1) {System.out.println("資料庫驅動不存在!");System.out.println(e1.toString());} catch (SQLException e2) {System.out.println("資料庫存在異常!");System.out.println(e2.toString());} finally {try {if (rs != null)rs.close();if (stmt != null)stmt.close();if (con != null)con.close();} catch (SQLException e) {System.out.println(e.toString());}}}}
    前提是要有一個studentdb的資料庫,和一張屬性一致的student_information表。


    由於時間有限,在寫博文的過程中參考過一些文獻,在此表示感謝;同時鑒於水平原因,你難免有不足之處,歡迎斧正!


                





相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.