麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Java學習筆記之_JDBC

2019-11-14 15:24:10
字體:
來源:轉載
供稿:網友

JDBC簡介

  1.SUN公司為了簡化,統一數據庫的操作,定義了一套java操作數據庫的規范,稱之為JDBC
  2.數據庫驅動
  3.JDBC全稱為:JAVA DataBase Commectivity(java數據庫連接)
  4.組成JDBC的兩個包(1 java.sql,2 javax.sql)。
  5.DriverManager->Connection->Statement(PReparedStatement,CallableStatement)->ResultSet
  6.JavaEE軟件分為了四個層次:
    6.1、客戶端層:DHTML(HTML、CSS、JS)、Java application
    從第二層開始,位于服務器端
    6.2、web層(表現層):Servlet/jsp ---- 接收客戶端數據、將數據處理結構展示給客戶端、業務層調度 --- Struts
    6.3、業務層(中間層):EJB ----- 根據系統業務流程 處理客戶端提交數據 --- Spring
    6.4、數據層(持久層):JDBC接口 ------- 完成數據的持久化、從數據庫獲取數據 --- Hibernate/IBatis
    企業里 web層、業務層、數據層 統稱為三層結構 SSH:Struts+Spring+Hibernate

如何搭建一個JDBC程序

  1.搭建環境
    1.1 在(MySQL,SqlServer,Oracle..)等數據庫中創建一個數據庫和表
    1.2 新建Java工程,并且針對不同的數據庫程序導入數據庫驅動(maven)
  2.JDBC如何實現對數據庫的操作呢?
    2.1 第一步:在程序中裝載驅動
      2.1.1 DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      2.1.2 Class.forName("com.mysql.jdbc.Driver"); //開發中建議使用
    2.2 第二步:獲得數據庫的連接
      String url=""; //數據庫訪問路徑,唯一標示數據庫的位置
      String user=""; //用戶名
      String pass=""; //密碼
      Connection conn=DriverManager.getConnection(url,user,pass);
    2.3 第三步:創建用于向數據庫發送Sql的Statement對象,并且發送Sql
      Statement stmt=conn.cteateStatement();
    2.4 第四步: 通過Sql操作數據庫
      String sql="";
      ResultSet rs=stmt.executeQuery(sql); //得到數據結果集
    2.5 第五步:釋放資源
      關閉資源的順序一般為:先開的后關閉,后開的先關閉
      ResultSet->Statement->Connection
  3.讀取配置文件(*.properties)代碼如下:
    ResourceBundle bundle=ResourceBundle.getBundle("*");
    String driver=bundle.getString("driver");

程序詳解—DriverManager

  1.Jdbc程序中的DriverManager用于加載驅動,并創建與數據庫的鏈接,這個API的常用方法:
    DriverManager.registerDriver(new Driver())
    DriverManager.getConnection(url, user, passWord),
    備注:在實際開發中并不推薦采用registerDriver方法注冊驅動。原因有二:
    1.1 查看Driver的源代碼可以看到,如果采用此種方式,會導致驅動程序注冊兩次,也就是在內存中會有兩個Driver對象。
    1.2 程序依賴mysql的api,脫離mysql的jar包,程序將無法編譯,將來程序切換底層數據庫將會非常麻煩。
  2. 推薦加載驅動方式:Class.forName(“com.mysql.jdbc.Driver”);
    采用此種方式不會導致驅動對象在內存中重復出現,并且采用此種方式,程序僅僅只需要一個字符串,不需要依賴具體的驅動,使程序的靈活性更高。
  3. 同樣,在開發中也不建議采用具體的驅動類型指向getConnection方法返回的connection對象。

程序詳解—數據庫URL

  1. URL用于標識數據庫的位置,程序員通過URL地址告訴JDBC程序連接哪個數據庫,URL的寫法為:
    jdbc:mysql://localhost:3306/test?參數名:參數值
    協議 子協議        主機:端口     數據庫   參數
  2.常用數據庫URL地址的寫法:
    2.1 Oracle:jdbc:oracle:thin:@localhost:1521:sid
    2.2 SqlServer:jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
    2.3 MySql:jdbc:mysql://localhost:3306/sid
    Mysql的url地址的簡寫形式: jdbc:mysql:///sid
    2.4 常用屬性:useUnicode=true&characterEncoding=UTF-8

程序詳解—Connection

  1. Jdbc程序中的Connection,它用于代表數據庫的鏈接,Collection是數據庫編程中最重要的一個對象,客戶端與數據庫所有交互都是通過connection對象完成的,這個對象的常用方法:
  createStatement():創建向數據庫發送sql的statement對象
  prepareStatement(sql) :創建向數據庫發送預編譯sql的PrepareSatement對象
  存儲過程
    prepareCall(sql):創建執行存儲過程的callableStatement對象。
  事務
    setAutoCommit(boolean autoCommit):設置事務是否自動提交。
    commit() :在鏈接上提交事務。
    rollback() :在此鏈接上回滾事務

程序詳解-Statement

  1. Jdbc程序中的Statement對象用于向數據庫發送SQL語句, Statement對象常用方法:
  1.1 執行SQL語句
    executeQuery(String sql) :用于向數據發送查詢語句,返回ResultSet結果集
    executeUpdate(String sql):用于向數據庫發送insert、update或delete語句,返回int,受影響的記錄
    execute(String sql):用于向數據庫發送任意sql語句,返回bool
  1.2 支持批處理,一次性執行多條SQL
    addBatch(String sql) :把多條sql語句放到一個批處理中。
    executeBatch():向數據庫發送一批sql語句執行。

程序詳解-PreparedStatement

  1. PreperedStatement是Statement的子類,它的實例對象可以通過調用Connection.preparedStatement()方法獲得,相對于Statement對象而言:
  2. PreperedStatement可以避免SQL注入的問題。
  3. Statement會使數據庫頻繁編譯SQL,可能造成數據庫緩沖區溢出。PreparedStatement 可對SQL進行預編譯,從而提高數據庫的執行效率并且PreperedStatement對于sql中的參數,允許使用占位符的形式進行替換,簡化sql語句的編寫。
  例如:
    String sql="select * from users where name=? and pwd=?";
    try{
      PreparedStatement pstmt=conn.prepareStatement(sql);
      pstmt.setString(1,userName);
      pstmt.setString(1,password);
      ResultSet rs=pstmt.executeQuery();
    }
  備注:
    (1). 必須在獲得PrepareStatement對象時,傳入SQL進行預編譯
    (2). 傳值,索引從1開始
    (3). pstmt執行SQL的時候,一定不要將預編譯的SQL傳入,否則會出錯

程序詳解-ResultSet

  1. Jdbc程序中的ResultSet用于代表Sql語句的執行結果。Resultset封裝執行結果時,采用的類似于表格的方式。ResultSet 對象維護了一個指向表格數據行的游標,初始的時候,游標在第一行之前,調用ResultSet.next() 方法,可以使游標指向具體的數據行,進而調用方法獲取該行的數據。
  2.ResultSet既然用于封裝執行結果的,所以該對象提供的大部分方法都是用于獲取數據的get方法:
    2.1 獲取任意類型的數據
      getObject(int index)
      getObject(string columnName)
    2.2 獲取指定類型的數據,例如:
      getString(int index)
      getString(String columnName)
  3. 如果rs返回一行數據,在開發中,經常使用if(rs.next())來替代while(rs.next());
  4. ResultSet還提供了對結果集進行滾動的方法:
    4.1 next():移動到下一行
    4.2 previous():移動到前一行
    4.3 absolute(int row):移動到指定行
    4.4 beforeFirst():移動resultSet的最前面。
    4.5 afterLast() :移動到resultSet的最后面。

程序詳解—釋放資源

  1. Jdbc程序運行完后,切記要釋放程序在運行過程中,創建的那些與數據庫進行交互的對象,這些對象通常是ResultSet, Statement和Connection對象。
  2. 特別是Connection對象,它是非常稀有的資源,用完后必須馬上釋放,如果Connection不能及時、正確的關閉,極易導致系統宕機。Connection的使用原則是盡量晚創建,盡量早的釋放。
  3. 為確保資源釋放代碼能運行,資源釋放代碼也一定要放在finally語句中。

JDBC操作數據庫Demo

  開發環境 MyEclipse
  數據庫 MySql
  下載地址:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久av一区二区 | 久久蜜桃精品一区二区三区综合网 | 亚洲一区在线观看视频 | 在线1区| 黄色网址免费在线播放 | 久久成年网站 | 国产一级桃视频播放 | 在线a毛片免费视频观看 | 欧美精品成人一区二区在线观看 | 精品一区二区久久久久久按摩 | 亚洲免费在线看 | 欧美成人二区 | 久久精品一二三区白丝高潮 | 红杏亚洲影院一区二区三区 | 99精品在线视频观看 | 综合精品久久 | 国产在线观看91精品 | 国产精品一二区 | 免费啪啪 | 一区二区久久精品66国产精品 | 欧美精品一区自拍a毛片在线视频 | 999精品久久久 | 日韩字幕在线 | 色人阁导航 | 精品三区视频 | 免费激情网址 | 中国漂亮护士一级a毛片 | japanesexxxx24videofree| 激情夜色 | 国产好片无限资源 | 一级毛片在线看 | 国产噜噜噜| 亚洲午夜久久久久 | 国产二区三区在线播放 | 九草在线视频 | 欧美视频一区二区三区 | 久草在线播放视频 | 蜜桃91麻豆 | 91成人免费视频 | 韩国精品久久久 | 亚洲操比视频 |