java基礎之JDBC一:概述及步驟詳解
阿新 • • 發佈:2018-06-11
etx fileread 操作 [] 全路徑 api mysql edi lean
1. JDBC的簡介 概述: 就是Java用來操作不同數據庫(DBMS)的類庫(技術), 本質就是一些類和接口. /* 類: DriverManager 接口: Driver, Connection, Statement, PreparedStatement, ResultSet */ //Java Data Base Connectivity, Java數據庫連接(技術). /* 集合: 就是Java用來存儲不同類型數據的容器, 本質就是一些類和接口. 接口: Collection, Set, List, Map 類: ArrayList, HashSet, HashMap IO流: 就是Java用來傳輸數據的技術, 本質就是一些類和接口. 抽象類: InputStream, OutputStream, Reader, Writer 實現類: FileInputStream, BufferedInputStream, FileReader, BufferedReader 總結: 集合的頂層都是接口, IO流的頂層都是抽象類.*/ 核心功能: A: 連接數據庫. B: 向數據庫發送SQL語句. C: 操作數據庫返回的 結果集. 如果操作的是更新語句(增刪改), 返回的結果集是: int 類型 如果操作的是查詢語句, 返回的結果集是: ResultSet 類型 2. 什麽是驅動? 就是設備間進行通信的橋梁. 3. JDBC的原理是什麽: 我們知道JDBC是用來操作不同數據庫的, 但是操作不同的數據庫需要使用不同的驅動.例如: 我們想操作MySQL數據庫, 就需要安裝MySQL的驅動, 我們想操作Oracle數據庫, 就需要安裝Oracle數據庫的驅動, 如果我們操作SQLServer數據庫, 就需要安裝SQLServer數據庫的驅動, 這樣做是比較麻煩的. 因為Java已經提供了大量的類和接口了, 但是要要求額外記憶一些 其他的類和接口, 這樣就增加了程序員的學習難度. 後來Sun公司發現了這個問題, 就和各大數據庫生產商協商決定, 由Sun公司提供統一的規範(就是一些類和接口), 數據庫生產商提供具體的實現. Sun公司提供的這些類和接口就是: JDBC.4. JDBC的操作步驟
1) 導入驅動. 2) 註冊驅動. 3) 獲取連接對象. 4) 根據連接對象, 獲取可以操作SQL語句的對象. 5) 執行SQL語句, 獲取結果集. 如果操作的是更新語句(增刪改), 返回的結果集是: int 類型 如果操作的是查詢語句, 返回的結果集是: ResultSet 類型 6) 操作結果集. 7) 釋放資源. 5. JDBC的API詳解之: DriverManager(類) 作用: 主要用於驅動管理及獲取連接對象的. 作用一: 註冊驅動.//MySQL/Oracle/SqlServer的驅動 public static void registerDriver(Driver driver); //註冊驅動的意思, 形參是誰的驅動, 就註冊誰. //Driver類就是MySQL數據庫提供的 驅動類 public class com.mysql.jdbc.Driver implements java.sql.Driver{ } //我們不用上述的方式註冊驅動, 因為上述註冊驅動的方式會導致驅動程序註冊兩次. //所以: 我們通過反射的方式加載 com.mysql.jdbc.Driver類的字節碼文件, 從而來自動 註冊驅動. Class.forName("com.mysql.jdbc.Driver"); //驅動類的全路徑 作用二: 獲取連接對象. public static Connection getConnection(String url, String username, String password); //獲取連接對象. /* url: 數據庫連接字符串. 格式: 連接方式:要操作的DBMS://要操作的數據庫的IP地址或者主機名:端口號/要操作的具體的數據庫 協議:子協議:要操作的DBMS://要操作的數據庫的IP地址或者主機名:端口號/要操作的具體的數據庫 例如: jdbc:mysql://127.0.0.1:3306/tempDb jdbc:mysql://localhost:3306/tempDb 如果操作的是本地數據庫(DBMS), 上述的寫法可以優化為: jdbc:mysql:///tempDb username: 要操作的數據庫(DBMS)的賬號 password: 要操作的數據庫(DBMS)的密碼 */ 6. JDBC的API詳解之: Connection(接口) Connection: 連接對象 作用一: 獲取可以執行SQL語句的對象. public Statement createStatement(); //獲取可以執行SQL語句的對象. public PreparedStatement prepareStatement(String sql); //獲取可以執行SQL語句的對象, 具有預編譯功能, 可以解決SQL註入攻擊問題. 作用二: 可以進行事務管理. public void setAutoCommit(boolean flag); //設置是否開啟事務的自動提交功能, 相當於我們昨天講解的: 開啟事務. public void commit(); //提交事務 public void rollback(); //事務回滾 public void setTransactionIsolation(int level); //設置事務的隔離級別 Connection接口中的常量: public static final int TRANSACTION_NONE = 0; public static final int TRANSACTION_READ_UNCOMMITTED = 1; public static final int TRANSACTION_READ_COMMITTED = 2; public static final int TRANSACTION_REPEATABLE_READ = 4; public static final int TRANSACTION_SERIALIZABLE = 8; 7. JDBC的API詳解之: Statement(接口) Statement: 可以操作SQL語句的對象. 作用一: 執行SQL語句. public ResultSet executeQuery(String sql); //執行查詢語句 public int executeUpdate(String sql); //執行更新語句 作用二: 可以執行批處理. //批處理只針對更新語句有效. public void addBatch(String sql); //把SQL語句添加到批處理(指令)中. public int[] executeBatch(); //執行批處理(指令) public void clearBatch(); //清除批出(指令) 8. JDBC的API詳解之: ResultSet(接口) ResultSet: 執行查詢語句後的結果集對象. public boolean next(); //判斷結果集中是否還有數據. 類似於Iterator#hasNext(). public XXX getXxx(int columnIndex); //根據列的編號, 獲取該列的信息, Xxx是數據類型的意思 public XXX getXxx(String columnName); //根據列的名字, 獲取該列的信息, Xxx是數據類型的意思, 建議用這種方式. //getInt(), getString(), getObject();
java基礎之JDBC一:概述及步驟詳解