20175214 《Java程序設計》第9周學習總結

20175214 《Java程序設計》第9周學習總結


本週學習任務總結

一、根據《java2實用教程》和藍墨雲學習視頻學習第十一章;java

二、嘗試將課本重點內容用本身的話複述手打;mysql

三、輸入課本代碼並上傳碼雲;git

四、使用IDEA調試代碼;sql

五、學習使用MySQL。數據庫


教材學習重點內容總結

  • 11.1 MySQL數據庫管理系統
    • 百度MySQL,進入官網,選擇社區版並下載,具體選項如圖;

      apache

    • 解壓過程略數組

  • 11.2 啓動MySQL數據庫服務器
    • 具體過程略,激活命令以下:
      • 命令:mysqld --initialize-insecure
        • 做用:初始化data目錄;
      • 命令:mysqladmin -u root -p password
        • 做用:修改root密碼。
  • 11.3 MySQL客戶端管理工具
    • 百度Navicat,進入官網選擇適合的下載便可,我下載的是Navicat Premiun
    • 具體鏈接過程如圖,若出現鏈接失敗請參考navicat鏈接mysql報錯1251解決方案

    • 建表如圖:
  • 11.4 JDBC服務器

    • 程序常常使用JDBC進行以下的操做 :
      • (1)與一個數據庫創建鏈接。
      • (2)向數據庫發送SQL語句。
      • (3)處理數據庫返回的結果。
  • 11.5 鏈接數據庫工具

    • 1.下載JDBC-MySQL數據庫驅動
    • 2.加載JDBC-MySQL數據庫驅動
    應用程序負責加載JDBC-MySQL數據庫驅動的代碼以下:
    try{  Class.forName("com.mysql.jdbc.Driver");
    }
    catch(Exception e){}
    • 3.鏈接數據庫
      • java.sql包中的DriverManager類有兩個用於創建鏈接的類方法(static方法)
      Connection getConnection(java.lang.String, java.lang.String, java.lang.String)
      Connection getConnection(java.lang.String)
      • 這兩個方法均可能拋出SQLException異常,DriverManager類調用上述方法能夠和數據庫創建鏈接,便可返回一個Connection對象。sqlserver

      • 使用Connection getConnection(java.lang.String) 方法創建鏈接的代碼以下:

      Connection con;
      String uri =
      "jdbc:mysql://192.168.100.1:3306/students?user=root&password=&useSSL=true";
      try{
         con = DriverManager.getConnection(uri); //鏈接代碼
       }
      catch(SQLException e){
          System.out.println(e);
      }
      • 若是root用戶密碼是xx,將&password=更改成&password=xx便可

      • 使用Connection getConnection(java.lang.String, java.lang.String, java.lang.String)方法創建鏈接的代碼以下:
      Connection con;
      String uri = "jdbc:mysql:// 192.168.100.1:3306/students? useSSL=true";
      String user ="root";
      String password ="";
      try{
          con = DriverManager.getConnection(uri,user,password); //鏈接代碼
       }
      catch(SQLException e){
          System.out.println(e);
      }
    • 4.注意漢字問題
      • 須要特別注意的是,若是數據庫的表中的記錄有漢字,那麼在創建鏈接時須要額外多傳遞一個參數characterEncoding,並取值gb2312utf-8
      String uri = "jdbc:mysql://localhost/students?useSSL=true&characterEncoding=utf-8";
       con = DriverManager.getConnection(uri, "root","");  //鏈接代碼
  • 11.6 查詢操做

    • 1.向數據庫發送SQL查詢語句
      • 首先使用Statement聲明一個SQL語句對象,而後讓已建立的鏈接對象con調用方法createStatement()建立這個SQL語句對象,代碼以下:
      try{Statement sql = con.createStatement();
      }
      catch(SQLException e){}
    • 2.處理查詢結果
      • 有了SQL語句對象後,這個對象就能夠調用相應的方法實現對數據庫中表的查詢和修改,並將查詢結果存放在一個ResultSet類聲明的對象中。也就是說SQL查詢語句對數據庫的查詢操做將返回一個ResultSet對象,ResultSet對象是按「列」(字段)組織的數據行構成。
      ResultSet rs = sql.executeQuery("SELECT * FROM students");
      • 結果集rs的列數是4列,恰好和students的列數相同
      • 而對於:ResultSet rs = sql.executeQuery("SELECT name,height FROM students");
      • ResultSet對象一次只能看到一個數據行,使用next()方法移到下一個數據行,得到一行數據後,ResultSet對象能夠使用getXxx方法得到字段值(列值),將位置索引(第一列使用1,第二列使用2等)或列名傳遞給getXxx方法的參數便可。
      • 不管字段是何種屬性,總能夠使用getString(int columnIndex)或getString(String columnName)方法返回字段值的串表示
    • 3.關閉鏈接
      • ResultSet對象和數據庫鏈接對象(Connection對象)實現了緊密的綁定,一旦鏈接對象被關閉,ResultSet對象中的數據馬上消失。這就意味着,應用程序在使用ResultSet對象中的數據時,就必須始終保持和數據庫的鏈接,直到應用程序將ResultSet對象中的數據查看完畢
      • 若是在代碼
      ResultSet rs = sql.executeQuery("SELECT * FROM students");
      以後馬上關閉鏈接:con.close();,程序將沒法獲取rs中的數據。
  • 11.6.1 順序查詢

    • 所謂順序查詢,是指ResultSet對象一次只能看到一個數據行,使用next()方法移到下一個數據行,next()方法最初的查詢位置,即遊標位置,位於第一行的前面。next()方法向下(向後、數據行號大的方向)移動遊標,移動成功返回true,不然返回false。
  • 11.6.2 控制遊標

    • 爲了獲得一個可滾動的結果集,需使用下述方法得到一個Statement對象。
    Statement stmt = con.createStatement(int type ,int concurrency);
  • 11.6.3 條件與排序查詢

    • where子語句
    通常格式:
    select 字段 from 表名 where 條件
    • (1)字段值和固定值比較,例如:
    select name,height from mess where name='李四'
    • (2)字段值在某個區間範圍,例如:
    select * from mess where height>1.60 and height<=1.8
    • 排序,用order by子語句對記錄排序
    select * from mess where name like '%林%' order by name
  • 11.7 更新、添加與刪除操做

    • 1.更新
      update 表 set 字段 = 新值 where <條件子句>
    • 2.添加
      insert into 表(字段列表) values (對應的具體的記錄)

      insert into 表 values (對應的具體的記錄)
    • 3.刪除
      delete from 表名 where <條件子句>
  • 11.8 使用預處理語句

  • 11.8.1 預處理語句的優勢

    • 對於JDBC,若是使用Connection和某個數據庫創建了鏈接對象con,那麼con就能夠調用prepareStatement(String sql)方法對參數sql指定的SQL語句進行預編譯處理,生成該數據庫底層的內部命令,並將該命令封裝在PreparedStatement對象中,那麼該對象調用下列方法均可以使得該底層內部命令被數據庫執行:
    ResultSet executeQuery()
    boolean execute()
    int executeUpdate()
  • 11.8.2 使用通配符

    • 在對SQL進行預處理時能夠使用通配符?(英文問號)來代替字段的值,只要在預處理語句執行以前再設置通配符所表明的具體值便可。例如:
    String str = "select * from mess where height < ? and name= ? "
    PreparedStatement sql = con.prepareStatement(str);

    在sql對象執行以前,必須調用相應的方法設置通配符?表明的具體值,如:

    sql.setFloat(1,1.76f);
    sql.setString(2, "武澤");
    • 預處理SQL語句sql中第1個通配符?表明的值是1.76,第2個通配符?表明的值是'武澤'。通配符按着它們在預處理SQL語句中從左到右依次出現的順序分別被稱爲第1個、第2個、……、第m個通配符。
    • 預處理語句設置通配符?的值的經常使用方法有:
    void setDate(int parameterIndex, Date x)
    void setDouble(int parameterIndex, double x)
    void setFloat(int parameterIndex, float x)
    void setInt(int parameterIndex, int x)
    void setLong(int parameterIndex, long x)
    void setString(int parameterIndex, String x)
  • 11.9 通用查詢

    • 本節的目的是編寫一個類,只要用戶將數據庫名、SQL語句傳遞給該類對象,那麼該對象就用一個二維數組返回查詢的記錄。
    • 程序中的結果集ResultSet對象rs調用getMetaData()方法返回一個ResultSetMetaData對象(結果集的元數據對象):
      ResultSetMetaData metaData = rs.getMetaData();
      metaData,調用getColumnCount()方法就能夠返回結果集rs中的列的數目:
      int columnCount = metaData.getColumnCount();
      metaData調用getColumnName(int i)方法就能夠返回結果集rs中的第i列的名字:
      String columnName = metaData.getColumnName(i);
  • 11.10 事務

  • 11.10.1 事務及處理

    • 事務由一組SQL語句組成,所謂事務處理是指:應用程序保證事務中的SQL語句要麼所有都執行,要麼一個都不執行。
  • 11.10.2 JDBC事務處理步驟

    • 1.用setAutoCommit(boolean b)方法關閉自動提交模式
    • 2.用commit()方法處理事務
    • 3.用rollback()方法處理事務失敗
  • 11.11鏈接SQL Server數據庫

    • 加載SQL Server驅動程序代碼以下:
    try {  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    }
    catch(Exception e){
    }
    • 鏈接的代碼以下:
    try{
        String uri= "jdbc:sqlserver://192.168.100.1:1433;DatabaseName=warehouse";
        String user="sa";
        String password="dog123456";
        con=DriverManager.getConnection(uri,user,password);
     }
    catch(SQLException e){
        System.out.println(e);
    }
  • 11.12鏈接Derby數據庫

    • 加載Derby數據庫驅動程序的代碼是:Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
    • 鏈接(create取值是true)的代碼是:
    Connection con =
    DriverManager.getConnection("jdbc:derby:students;create=true");

教材學習中的問題和解決過程


代碼託管

相關文章
相關標籤/搜索