201521123117 《Java程序設計》第14周學習總結

1. 本週學習總結

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

2. 書面做業

1. MySQL數據庫基本操做

創建數據庫,將本身的姓名、學號做爲一條記錄插入。(截圖,需出現本身的學號、姓名)
在本身創建的數據庫上執行常見SQL語句(截圖)
mysql

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

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

//201521123117
try {
            conn = DriverManager.getConnection(URL,userName,password);
            Statement statement = conn.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
            
            while(resultSet.next()){
                int id = resultSet.getInt("id");
                String stuno = resultSet.getString("stuno");
                String name =resultSet.getString("name");
                int age =resultSet.getInt("age");
                Date date = resultSet.getDate("birthdate");
                System.out.print("id="+id+" stuno="+stuno+" name="+name+" age="+age+" birthdate="+date);
            }
            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            if(conn!=null)
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            conn = null;
        }

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

(1)裝載驅動;
(2)建立數據庫並鏈接(Connection);
(3)經過鏈接想數據庫發送SQL語句(Statement);
(4)得到結果集(ResultSet);
(5)處理結果;
(6)關閉鏈接,釋放資源。

-參考:實驗任務書-題目2sql

3. PreparedStatement與參數化查詢

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

int row = 0;
            //根據參數更新數據
            String strSql = "update students set name = ? where Id = ?";
            pStatement = con.prepareStatement(strSql);
            pStatement.setString(1, "li");
            pStatement.setInt(2, 2);
            row = pStatement.executeUpdate();
            System.out.println("成功更新了"+row+"行數據!");
            pStatement.close();//當即釋放資源
String strSql = "select * from students where name = ?";
            pStatement = con.prepareStatement(strSql);
            pStatement.setString(1, "李心宇");
            rs = pStatement.executeQuery();
            System.out.println("id\t學號 \t\t姓名\t年齡\t出生年月日");
            while(rs.next()){
                
                //經過列名取數據
                System.out.print(rs.getInt("id")+"\t");
                System.out.print(rs.getString("stuno")+"\t");
                System.out.print(rs.getString("name")+"\t");
                System.out.print(rs.getInt("age")+"\t");
                System.out.print(rs.getDate("birthdate"));
                System.out.println();
                
            }
            pStatement.close();//當即釋放資源

3.2 批量更新-批量插入1000個學生,統計整個操做所消耗的時間。對比普通方法插入與使用executeBatch方法所消耗的時間。(使用JUint4測試,須要出現時間對比截圖)

普通方法insert():數據庫

//201521123117          
for(int i=0;i<1000;i++){
    String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)";
    pStatement = con.prepareStatement(strSql);
    pStatement.setString(1, "201521123117");
    pStatement.setString(2, "li");
    pStatement.setInt(3, 20);
    pStatement.setString(4, "1997-09-11");
}

executeBatch方法:安全

//201521123117          
for(int i=0;i<1000;i++){
    String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)";
    pStatement = con.prepareStatement(strSql);
    pStatement.setString(1, "201521123117");
    pStatement.setString(2, "li");
    pStatement.setInt(3, 20);
    pStatement.setString(4, "1997-09-11");
    pStatement.addBatch();//添加到同一個批處理中
}
pStatement.executeUpdate();
pStatement.close();//當即釋放資源

時間對比截圖:
ide

參考:實驗任務書-題目3學習

4. JDBCUtil與DAO

4.1 粘貼一段你認爲比較有價值的代碼,並說明爲何要摘取這段代碼。出現學號

//201521123117
@Override
    public List<Student> findAll() {
        // TODO Auto-generated method stub
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        Student stu=null;
        List<Student> students=new ArrayList<Student>();
        String sql = "select * from student";
        try {
            conn = JDBCUtil.getConnection();
            stat = conn.createStatement();
            rs = stat.executeQuery(sql);
            while(rs.next()){
                stu=new Student(rs.getInt("id"),rs.getString("name"));
                students.add(stu);
            }
        }catch (SQLException sqle) {
            sqle.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtil.realeaseAll(rs,stat, conn);
        }
        return students;
    }

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

DAO模式的使用至關於創建一個接口,接口中有咱們所須要的方法。在程序中,當須要和數據進行交互的時候則使用這個接口,而且編寫一個實現類來實現這個接口上的方法,能夠很清晰的知道interface DAO接口的類有什麼功能,代碼之間的關係清晰。並且以後咱們須要對程序的修改的話,只需對DAO模式中的某個方法修改便可,不須要整個項目都進行修改,修改範圍變小,工做量減小。

參考:實驗任務書-題目5測試

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

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

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

(1)在數據讀取時,使用文件速度比較慢,而使用數據庫時讀取速度更快,效率更高些;
(2)使用數據庫時須要設置密碼,這就限制了訪問數據庫的對象,相對於使用文件,安全性更高,內容泄露的可能性低;
(3)使用文件時須要打開文件,存放數據再關閉文件,而使用數據庫只需輸入相應的命令便可實現。

3. 碼雲

3.1. 碼雲代碼提交記錄

相關文章
相關標籤/搜索