JAVA資料庫連線,JDBC深度分析解析連結過程及方式
一、概念 Java DataBase Connectivity,是一種用於執行SQL語句的Java API,它由一組用Java語言編寫的類和介面組成。通過這些類和介面, JDBC把SQL語句傳送給不同型別的資料庫進行處理並接收處理結果。
二、JDBC兩大類 1.對Java開發人員而言是API,對資料庫提供商而言是介面。 2."面向開發人員:作為API, JDBC為程式開發提供標準的介面 3.面向資料庫廠商:作為介面i資料庫廠直,標準方法來實現資料庫連線與操作(資料庫驅動程式)。
三、型別 1.型別一:JDBC-ODBC橋加ODBC驅動程式) 2.型別二(本地API和部分基於Java的驅動程式) 3.型別三(為資料庫中介軟體實現的純Java驅動程式) 4.型別四(本地協議純Java驅動程式) 5.如果我們編寫的程式只訪問一種型別的資料庫,那麼最好選擇型別4。如果程式需要同時訪問多個型別的資料庫,那麼最好選擇型別3。如果型別3和4都不適用於所用的資料庫,才選擇型別2,型別1通常不會考慮為部署級的驅動程式,一般只在開發或者測試中才會使用
四、有兩種方法可以設定一個到資料庫的連線 1.使用java.sql.DriverManager類的靜態方法getConnection(,該方法帶一個URL代表資料來源的名稱 2.使用JNDI (Java Naming and Directory Interface, Java命名服務)查詢資料來源的名稱,.JNDI返回一個javax.sql.DataSource物件,然後使用DataSource類的getConnection()方法
五、DriverManag和DataSourcer區別 1.DataSource類是從資料庫連線池中獲取連線,而DriverManager類是直接建立與資料庫的連線 2.在大型多層應用開發中,一般都是首選使用DataSource類來連線資料庫
六、步驟 1.載入驅動程式 載入MySQL驅動程式.| Class.forName (con.mysql.jdbc.Driver) 2.建立一個連線物件口 Strinq url = “idbc:mysql://127.0.0.1: 3306/資料庫名稱?”?後可加useUnicode=true&characterEncoding=UTE8解決中文亂碼 . con = DriverManager.getConnection(url, userName, password); 3.建立宣告語句物件 StringBuilder sb = new StringBuilder(); sb.append("(’ “” ‘)") sb. append("(’ “” ')") Statement statement = null; statementcon.createstatement (); :statement.executeUpdate(sb.tostring()); 4.建立宣告語句物件 1)使用宣告語句物件的executeUpdate(sal)方法完成增刪改操作 2)使用宣告語句物件的executeQuery(sal)方法獲得結果集物件 5.執行該語句. .execute( ) executeUpdate( ) executeQuery( ) 6.關閉各種物件
七、驅動網站 mvnrepository.com 1.ResultSet executeQuery(String sql):執行一個返回單個結果集的SOL語句,只能該方法執行SELECT語句。 2.int executeUpdate(String sql):使用該方法執行不返回結果集的DDL和DML (Update.Insert、 Delete)語句。如果執行的是DML,則返回值為執行sOL語句影響的行數。1如果是執行DDL語句,則返回值為0. 3.boolean execute(String sql):該方法可以執行任何SOL語句。如果執行後第一個結果為 ResultSet物件,則返回true;如果執行後第一個結果為受影響的行數或者沒有任何結果,則返回false。只有在不清楚sOL語句的型別時,才推薦使用execute(方法。如果該語句產生了結果集,則通過getResultSet()方法獲得該結果集。
八、statement 1.存在sql注入風險 2.sql語句無法複用 3.預編譯:Preparedstatement 1)避免sql注入風險 2)sql語句可以複用 4.CallableStatement呼叫儲存討程 4.日期型別:Dateutil.date2str(stu.getCreateTime (), “yyyy-MM-dd hh:mm:ss”) 物件關係資料庫對映 ORM----object RelationShip Database Mapping
九、分頁 第一個步驟:按照條件統計查詢,滿足查詢條件的總條數,判斷總條數是否為0,不為0,才開始具體資料的查詢 第二個步驟:查詢具體的資料
十、處理結果集 next( ) getXXX( )
十一、處理大資料 Clob大文字資料 Blob大二進位制資料.
十二、分層思想(三層架構) 表現層 MVC 業務層 事物指令碼(使用面向過程來組織業務邏輯) 領域模型(使用面向物件來組織業務邏輯) 持久層 ORM 行資料入口