亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区二区三区免费视| 欧美激情videos| 日韩女优人人人人射在线视频| 久久精品亚洲精品| 久久国产精品影视| 中文字幕久久亚洲| 精品福利视频导航| 少妇高潮久久久久久潘金莲| 久热精品视频在线观看| 精品国产拍在线观看| 久久久久久久久久婷婷| 国产精品久久久久久久久久免费| 欧美一性一乱一交一视频| 精品人伦一区二区三区蜜桃网站| 亚洲毛片在线免费观看| 日本在线观看天堂男亚洲| 狠狠综合久久av一区二区小说| 欧美中文在线免费| 久久久久久中文字幕| 国产午夜一区二区| 国产伦精品免费视频| 欧美性视频网站| 亚洲激情小视频| 91在线精品视频| 一区二区在线视频播放| 91久久综合亚洲鲁鲁五月天| 色爱av美腿丝袜综合粉嫩av| 精品国产一区二区三区久久狼5月| 日韩欧美中文字幕在线观看| 日韩欧美在线看| 色综合久久精品亚洲国产| 性欧美激情精品| 清纯唯美日韩制服另类| 亚洲第一网站男人都懂| 青青草精品毛片| 中文字幕一区二区三区电影| 欧美性受xxxx白人性爽| 国产精品亚洲自拍| 日韩小视频网址| 欧美性xxxxx极品| 国产精品久久久久久久久借妻| 红桃视频成人在线观看| 成人免费淫片视频软件| 欧美一区在线直播| 欧美床上激情在线观看| 欧美孕妇毛茸茸xxxx| 日韩视频永久免费观看| 欧美大片大片在线播放| 成人av电影天堂| 黄色成人av网| 亚洲国产精品高清久久久| 欧美日韩在线免费| 亚洲精品动漫久久久久| 亚洲日韩欧美视频一区| 日韩电影第一页| 91精品啪在线观看麻豆免费| 欧美小视频在线观看| 国产成人亚洲精品| 亚洲精品xxxx| 久久深夜福利免费观看| 日韩欧美中文免费| 国产精品狼人色视频一区| 久久久久久久久久久av| 色综合久久88| 自拍亚洲一区欧美另类| 久久在线精品视频| 久久国产精品免费视频| 亚洲第一天堂无码专区| 91久久精品一区| 国产精品久久久久久久7电影| 欧美成人免费小视频| 97成人精品区在线播放| 欧美一区二粉嫩精品国产一线天| 国产精品久久久久久婷婷天堂| 欧美国产一区二区三区| 欧美黑人视频一区| 欧美裸体xxxxx| 国产日韩欧美另类| 国产91色在线|免| 国产成人免费av| 亚洲综合国产精品| 精品国产一区二区三区久久| 最近更新的2019中文字幕| 精品露脸国产偷人在视频| 国产精品精品视频| 欧美刺激性大交免费视频| 国产高清视频一区三区| 黑人巨大精品欧美一区二区三区| www.欧美精品| 97在线精品视频| 九九精品在线观看| 狠狠久久五月精品中文字幕| 国产精品久久av| 欧美激情精品久久久| 日韩精品高清视频| 亚洲成人教育av| 伊人久久精品视频| 亚洲影院高清在线| 亚洲国产精品福利| 国产久一一精品| 日韩资源在线观看| 亚洲欧美中文日韩在线| 亚洲精品国产精品国自产在线| 一区二区在线视频| 亚洲理论片在线观看| 国模吧一区二区| 国产一区二区三区在线播放免费观看| 国产精品尤物福利片在线观看| 国产日韩视频在线观看| 欧洲成人性视频| 久久精品亚洲精品| 丁香五六月婷婷久久激情| 欧美日韩亚洲视频一区| 欧美国产日韩xxxxx| 亚洲色图美腿丝袜| 亚洲精品免费在线视频| 亚洲一区二区三区777| 国产精品久久久久久久久久久久久久| 欧美日韩激情网| 日韩欧美精品网址| 亚洲人精品午夜在线观看| 国产精品吹潮在线观看| 国产69精品久久久久9| 国产精品亚洲综合天堂夜夜| 亚洲精品狠狠操| 亚洲天堂成人在线视频| 国产精品久久久久7777婷婷| 国产男女猛烈无遮挡91| 午夜精品久久久久久99热软件| 亚洲热线99精品视频| 国产mv久久久| 中文字幕亚洲天堂| 亚洲第一在线视频| 国产精品1区2区在线观看| 欧美剧在线观看| 成人福利网站在线观看11| 51视频国产精品一区二区| 久久久成人精品| 国产精品老女人视频| 日韩成人中文电影| 欧美日韩一区二区免费视频| 国产一区二区精品丝袜| 日韩精品中文字幕在线| 国产精品露脸av在线| 亚洲天堂2020| 国产精品一区电影| 国产精品嫩草影院一区二区| 久久久久久伊人| 亚洲色图35p| 国产精品爽爽爽爽爽爽在线观看| 26uuu日韩精品一区二区| 久久精品国产91精品亚洲| 国产做受高潮69| 中国日韩欧美久久久久久久久| 最近日韩中文字幕中文| 91亚洲永久免费精品| 欧美激情乱人伦| 日韩女优在线播放| 久久精品国产91精品亚洲| 久久久国产一区二区三区| 国产亚洲欧美aaaa| 亚洲欧美中文日韩在线v日本| 亚洲日韩中文字幕在线播放| 91在线视频免费|