第14周-數據庫

1. 本週學習總結

1.1 以你喜歡的方式(思惟導圖或其餘)概括總結多數據庫相關內容。

2. 書面做業

1. MySQL數據庫基本操做

創建數據庫,將本身的姓名、學號做爲一條記錄插入。(截圖,需出現本身的學號、姓名)

在本身創建的數據庫上執行常見SQL語句(截圖)




2. 使用JDBC鏈接數據庫與Statement

2.1 使用Statement操做數據庫。(粘貼一段你認爲比較有價值的代碼,出現學號)

//201521123094
String URL = "jdbc:mysql://localhost:3306/students";
String driverName = "com.mysql.jdbc.Driver";
String sql = "XXX";  //輸入指令
String userName = "root"; //帳戶
String password = "******"; //密碼
Connection conn = null;
try {
        Class.forName(driverName);  //註冊驅動
    } catch (ClassNotFoundException e1) {
        e1.printStackTrace();
    }
try {
    conn = DriverManager.getConnection(URL,userName,password);
    Statement statement = conn.createStatement();
    ResultSet resultSet = statement.executeQuery(sql);
    } catch (SQLException e) {
        e.printStackTrace();
    }finally{
        if(conn!=null)
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        conn = null;  //關閉鏈接
    }

相關截圖:
mysql

2.2 使用JDBC操做數據庫主要包含哪幾個步驟?

答:
(1)Class.forName(driverName)——註冊驅動
(2)Connection——與數據庫創建鏈接
(3)Statement——向數據庫發送SQL語句
(4)ResultSet——得到和處理SQL語句返回的結果
(5)關閉鏈接,釋放資源sql

3. PreparedStatement與參數化查詢

3.1 使用PreparedStatement根據用戶指定的查詢條件進行查詢。(粘貼一段你認爲比較有價值的代碼,出現學號)

//201521123094
conn = DriverManager.getConnection(URL, userName, password);
String strSql = "select *查看條件* from *表名* where *篩選條件*?";
pStatement = conn.prepareStatement(strSql);
pStatement.set類型(1, *要篩選的值*);
resultSet = pStatement.executeQuery();
resultSet.next();  //多SQL語句可用

//      還有一些釋放資源的代碼
            if (resultSet != null)
                try {
                    resultSet.close();
                    resultSet = null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            if (pStatement != null)
                try {
                    pStatement.close();// 關閉語句
                    pStatement = null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            if (conn != null) {
                try {
                    conn.close();// 關閉鏈接
                    conn = null;
                } catch (Exception e) {
                    e.printStackTrace();
                }

相關截圖:
數據庫

3.2 批量更新-批量插入1000個學生,統計整個操做所消耗的時間。(使用方法executeBatch)

答:
個人代碼
ide

查看錶結果
工具

整個操做所消耗的大概時間如圖所示。
學習

4. JDBCUtil與DAO

4.1 粘貼一段你認爲比較有價值的代碼,出現學號。

//201521123094(兩個編寫的類型格式比較不一樣)
@Override
public int add(entity.Student stu) {
    Connection conn = null;
    PreparedStatement pstat = null;
    String sql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)";
    int result = -1;
    try {
        conn = JDBCUtil.getConnection();
        pstat = conn.prepareStatement(sql);
        pstat.setString(1, stu.getStuno());
        pstat.setString(2, stu.getName());
        pstat.setInt(3, stu.getAge());
        pstat.setString(4, stu.getBirthdate());
        result = pstat.executeUpdate();
    } catch (SQLException sqle) {
        sqle.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        JDBCUtil.realeaseAll(null, pstat, conn);
    }
    return result > 0 ? 1 : -1;
}

@Override
public List<entity.Student> findAll() {
    Connection conn = null;
    PreparedStatement pstat = null;
    ResultSet rs = null;
    List<entity.Student> students = new ArrayList<Student>();
    String sql = "select * from students;";
    try {
        conn = JDBCUtil.getConnection();
        pstat = conn.prepareStatement(sql);
        rs = pstat.executeQuery();
        while(rs.next()){
            int id = rs.getInt("id");
            String stuno = rs.getString("stuno");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            String date = rs.getString("birthdate");
            Student stu = new Student(id, stuno, name, age, date);
            students.add(stu);
        }
    } catch (SQLException sqle) {
        sqle.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        JDBCUtil.realeaseAll(null, pstat, conn);
    }
    return students;
}

相關截圖:
測試

4.2 使用DAO模式訪問數據庫有什麼好處?

答:
(1)DAO(Database Access Object) ——數據庫訪問接口
(2)使程序井井有條,不須要知道層次直接的具體關係,便於管理。
(3)若是隻是一層出錯只要處理那一層的程序,通常不會影響其餘。3d

5. 使用數據庫改造購物車系統

5.1 使用數據庫改造之前的購物車系統(應有圖形界面)。若是之前未完成購物車系統,可編寫基於數據庫的學生管理系統。包括對學生的增刪改查,要求使用。

5.2 相比較使用文件,使用數據庫存儲與管理數據有何不同?

答:
(1)文件存儲須要處理的步驟比較多,讀寫文件比較麻煩。
(2)數據庫存儲與管理數據能夠直接交互,且數據永久保存,數據經過SQL語句就能進行管理。code

選作:6. 批量更新測試

數據庫課程上,須要測試索引對查找的加速做用。然而在幾百或幾千的數據量上進行操做沒法直觀地體驗到索引的加速做用。現但願編寫一個程序,批量插入1000萬條數據,且該數據中的某些字段的內容能夠隨機生成blog

6.1 截圖你的代碼(出現學號)、統計運行時間

6.2 計算插入的速度到底有多快?(以條/秒、KB/秒兩種方式計算)

選作:7. 事務處理

7.1 使用代碼與運行結果證實你確實實現了事務處理功能。(粘貼一段你認爲比較有價值的代碼,出現學號)

7.2 你以爲何時須要使用事務處理?

參考:實驗任務書-題目4

選作 8. 數據庫鏈接池

使用數據庫鏈接池改寫題目5
參考:實驗任務書-題目4

3. 碼雲

3.1. 碼雲代碼提交記錄

——在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖

4.課外閱讀

4.1 JDBC(TM) Database Access

4.2 代碼結構中Dao,Service,Controller,Util,Model是什麼意思,爲何劃分

4.3 mysq數據庫管理工具navicat基本使用方法

相關文章
相關標籤/搜索