Bài giảng Nhập môn công nghệ phần mềm - Tuần 2: Vòng đời phần mềm và lập trình với cơ sở dữ liệu

B5. Xử lý kết quả nhận về (3) • Muốn lấy dữ liệu từ ResultSet, sử dụng phương thức getXXX() cho phù hợp • getString() • getInt() • getDouble() • getObject() • Mỗi kiểu dữ liệu trong java.sql.Types, đều có phương thức getXXX tương ứng B6. Đọc metadata của ResultSet và metadata của CSDL (tùy chọn) • Khi đã có đối tượng ResultSet hoặc Connection, LTV có thể lấy về metadata của CSDL hoặc của câu truy vấn • → Đem lại thông tin hữu ích về dữ liệu lấy về, hoặc về CSDL đang sử dụng – ResultSetMetaData rsMeta = rs.getMetaData(); – DatabaseMetaData dbmetadata = connection.getMetaData(); • Có khoảng 150 phương thức trong lớp DatabaseMetaData

pdf34 trang | Chia sẻ: hachi492 | Ngày: 05/01/2022 | Lượt xem: 518 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Nhập môn công nghệ phần mềm - Tuần 2: Vòng đời phần mềm và lập trình với cơ sở dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nhập môn Công nghệ phần mềm Introduction to Software Engineering (IT3180) Bài tập tuần 02 Vòng đời phần mềm & Lập trình với cơ sở dữ liệu Giang vien Mục tiêu 29/23/2020 Department of Software Engineering - SOICT/HUST • Thực hiện các bài tập (câu hỏi) về nội dung Vòng đời phần mềm • Xác định các đầu vào (input) và kết quả (output) cho nhóm yêu cầu nghiệp vụ của bài toán (case study) • Lập trình với cơ sở dữ liệu: – Xây dựng ứng dụng Java trên công cụ Netbeans – Thiết kế, xây dựng cơ sở dữ liệu với phpMyAdmin trên MySQL – Lập trình ứng dụng Java kết nối MySQL, thực thi các truy vấn SQL Đánh giá 39/23/2020 Department of Software Engineering - SOICT/HUST • Hoàn thành các bài tập về nội dung Vòng đời phần mềm, nắm được đặc điểm chính của các mô hình phát triển phần mềm khác nhau. • Các nhóm sinh viên xác định được thông tin cơ bản (input / output) cho nghiệp vụ mà nhóm đã lựa chọn để phát triển • Hoàn thành bài thực hành lập trình với cơ sở dữ liệu Bài 1.1 a) Mô hình bản mẫu (prototyping model) của phát triển phần mềm là 1. Một cách tiếp cận hợp lý khi yêu cầu được định nghĩa rõ ràng 2. Một cách tiếp cận hữu ích khi khách hàng không thể định nghĩa yêu cầu rõ ràng 3. Cách tiếp cận tốt nhất cho những dự án có đội phát triển lớn 4. Tất cả các phương án trên đều sai 9/23/2020 Department of Software Engineering - SOICT/HUST 4 Bài 1.1 b) Bước đầu tiên trong vòng đời phát triển phần mềm (Software Development Life Cycle) là? 1. Xác định các nhu cầu và ràng buộc 2. Viết phần mềm 3. Vận hành hệ thống để loại bỏ các khiếm khuyết 4. Nâng cao sản phẩm sau khi đã triển khai 9/23/2020 Department of Software Engineering - SOICT/HUST 5 Bài 1.1 c) Tình huống nào không phù hợp để có thể áp dụng mô hình thác nước? (chọn nhiều) 1. Khó khăn trong việc bổ sung yêu cầu mới trong các pha sau của tiến trình 2. Các yêu cầu được xác định rõ ràng, đầy đủ ngay từ đầu 3. Khách hàng muốn có sản phẩm vận hành được sớm 4. Khó thu thập đầy đủ yêu cầu ngay ở giai đoạn đầu của dự án 9/23/2020 Department of Software Engineering - SOICT/HUST 6 Bài 1.2 Giải ô chữ 9/23/2020 Department of Software Engineering - SOICT/HUST 7 Bài 1.2 Giải ô chữ Các gợi ý cho ô chữ: 9/23/2020 Department of Software Engineering - SOICT/HUST 8 Bài 1.2 Giải ô chữ Hướng dẫn: 9/23/2020 Department of Software Engineering - SOICT/HUST 9 Bài 1.2 Giải ô chữ 9/23/2020 Department of Software Engineering - SOICT/HUST 10 Bài 1.3 So sánh các mô hình phát triển PM Các mô hình: Thác nước, Chế thử, Gia tăng, Xoắn ốc, Phát triển dựa trên thành phần 9/23/2020 Department of Software Engineering - SOICT/HUST 11 Đặc điểm chính Ưu điểm Nhược điểm Tình huống áp dụng phù hợp Mô hình Thác nước Mô hình Chế thử Mô hình Gia tăng Mô hình Xoắn ốc Mô hình dựa thành phần Bài 1.3 So sánh các mô hình phát triển PM Hướng dẫn 9/23/2020 Department of Software Engineering - SOICT/HUST 12 Đặc điểm chính Ưu điểm Nhược điểm Tình huống áp dụng phù hợp Mô hình Thác nước Tuyến tính, không quay lui, Mô hình Chế thử Lặp, xây dựng bản mẫu, Mô hình Gia tăng Lặp, tăng dần, Mô hình Xoắn ốc Lặp, quản trị rủi ro, Mô hình dựa thành phần Tái sử dụng, Bài 1.4 • Phân tích thông tin cơ bản (input / output) cho nghiệp vụ bài toán (case study) – Các nhóm thảo luận để xác định đầu vào (input) và kết quả (output) cho nhóm yêu cầu nghiệp vụ của bài toán (case study) mà nhóm đã lựa chọn. – Phân rã mô tả của nhóm yêu cầu nghiệp vụ thành các nghiệp vụ nhỏ hơn. – Với mỗi nghiệp vụ nhỏ này thực hiện phân tích các thông tin cụ thể 9/23/2020 Department of Software Engineering - SOICT/HUST 13 Bài 1.4 • Có thể vẽ sơ đồ thể hiện kết quả phân tích: 9/23/2020 Department of Software Engineering - SOICT/HUST 14 Thực hành lập trình với cơ sở dữ liệu • JDBC là gì? – Là các API Java chuẩn tắc để truy cập CSDL quan hệ • Ứng dụng không cần quan tâm tới chi tiết cụ thể của CSDL – Nằm trong Java SE (J2SE) • Java SE 6 có phiên bản JDBC 4 9/23/2020 Department of Software Engineering - SOICT/HUST 15 Thực hành lập trình với cơ sở dữ liệu • JDBC API – Định nghĩa một tập các Java Interfaces, được cài đặt bởi các vendor khác nhau, thành các JDBC Drivers • Các ứng dụng sử dụng tập các giao diện này để thực hiện các thao tác với CSDL → Tính portability – Phần lớn API của JDBC nằm trong gói java.sql.* • DriverManager, Connection, ResultSet, DatabaseMetaData, ResultSetMetaData, PreparedStatement, CallableStatement và Types – Một số chức năng nâng cao khác nằm trong gói javax.sql • DataSource 9/23/2020 Department of Software Engineering - SOICT/HUST 16 Thực hành lập trình với cơ sở dữ liệu • JDBC Driver – Là cài đặt cụ thể của các JDBC interfaces • Tất cả các database server đều có JDBC driver(s) tương ứng 9/23/2020 Department of Software Engineering - SOICT/HUST 17 Thực hành lập trình với cơ sở dữ liệu • Database URL – Được sử dụng để tạo một kết nối tới database • Có thể chứa server, port, protocol, etc. – Cú pháp: • jdbc:subprotocol_name:driver_dependant_databasename – Ví dụ: • Oracle thin driver – jdbc:oracle:thin:@machinename:1521:dbname • Derby – jdbc:derby://localhost:1527/sample • Pointbase – jdbc:pointbase:server://localhost/sample 9/23/2020 Department of Software Engineering - SOICT/HUST 18 Thực hành lập trình với cơ sở dữ liệu • Các bước lập trình với JDBC – B1. Load JDBC driver cho từng loại CSDL – B2. Lấy đối tượng Connection – B3. Lấy đối tượng Statement – B4. Thực hiện câu truy vấn, câu lệnh update – B5. Đọc kết quả trả về – B6. Đọc các Meta-data (tùy chọn) – B7. Đóng đối tượng Statement và đối tượng Connection 9/23/2020 Department of Software Engineering - SOICT/HUST 19 B1. Load JDBC driver cho từng loại CSDL • Để load về driver cho CSDL và đăng ký nó với DriverManager, cần load class tương ứng – Class.forName() try { // This loads an instance of the Pointbase DB Driver. // The driver has to be in the classpath. Class.forName("org.apache.derby.jdbc.ClientDriver"); }catch (ClassNotFoundException cnfe){ System.out.println("" + cnfe); } 20 B2. Lấy ra đối tượng Connection • Lớp DriverManager chịu trách nhiệm tạo kết nối tới CSDL – Sử dụng DataSource là cách hay dùng hơn khi muốn lấy ra một đối tượng connection (trình bày ở phần sau) • Ví dụ tạo kết nối tới CSDL như sau: try { Connection connection = DriverManager. getConnection("jdbc:derby://localhost:1527/sample" , “app"," app "); } catch(SQLException sqle) { System.out.println("" + sqle); } 21 DriverManager & Connection • java.sql.DriverManager • getConnection(String url, String user, String password) throws SQLException • java.sql.Connection • Statement createStatement() throws SQLException • void close() throws SQLException • void setAutoCommit(boolean b) throws SQLException • void commit() throws SQLException • void rollback() throws SQLException 22 B3. Lấy ra đối tượng Statement • Tạo một đối tượng Statement từ đối tượng Connection – java.sql.Statement • ResultSet executeQuery(string sql) • int executeUpdate(String sql) – Ví dụ: • Statement statement = connection.createStatement(); • Cùng đối tượng Statement có thể được dùng cho nhiều queries không liên quan tới nhau 23 B4. Thực thi các câu truy vấn/các lệnh • Từ đối tượng Statement, 2 lệnh được sử dụng nhiều nhất là – (a) QUERY (SELECT) • ResultSet rs = statement.executeQuery("select * from customer_tbl"); – (b) ACTION COMMAND (UPDATE/DELETE) • int iReturnValue = statement.executeUpdate("update manufacture_tbl set name = ‘IBM' where mfr_num = 19985678"); 24 B5. Xử lý kết quả nhận về • Duyệt trên ResultSet để xử lý thông tin – java.sql.ResultSet • boolean next() • xxx getXxx(int columnNumber) • xxx getXxx(String columnName) • void close() • Đầu tiên, con trỏ lặp nằm ở trước hàng đầu tiên – LTV cần gọi phương thức next() để chuyển con trỏ đến hàng đầu tiên 25 B5. Xử lý kết quả nhận về (2) • Khi đã có ResultSet, LTV dễ dàng xử lý dữ liệu – Lưu ý: Chỉ số của ResultSet bắt đầu từ 1 while (rs.next()){ // Wrong this will generate an error String value0 = rs.getString(0); // Correct! String value1 = rs.getString(1); int value2 = rs.getInt(2); int value3 = rs.getInt(“ADDR_LN1"); } 26 B5. Xử lý kết quả nhận về (3) • Muốn lấy dữ liệu từ ResultSet, sử dụng phương thức getXXX() cho phù hợp • getString() • getInt() • getDouble() • getObject() • Mỗi kiểu dữ liệu trong java.sql.Types, đều có phương thức getXXX tương ứng 27 B6. Đọc metadata của ResultSet và metadata của CSDL (tùy chọn) • Khi đã có đối tượng ResultSet hoặc Connection, LTV có thể lấy về metadata của CSDL hoặc của câu truy vấn • → Đem lại thông tin hữu ích về dữ liệu lấy về, hoặc về CSDL đang sử dụng – ResultSetMetaData rsMeta = rs.getMetaData(); – DatabaseMetaData dbmetadata = connection.getMetaData(); • Có khoảng 150 phương thức trong lớp DatabaseMetaData 28 Ví dụ về ResultSetMetaData ResultSetMetaData meta = rs.getMetaData(); //Return the column count int iColumnCount = meta.getColumnCount(); for (int i =1 ; i <= iColumnCount ; i++){ System.out.println(“Column Name: " + meta.getColumnName(i)); System.out.println(“Column Type" + meta.getColumnType(i)); System.out.println("Display Size: " + meta.getColumnDisplaySize(i) ); System.out.println("Precision: " + meta.getPrecision(i)); System.out.println(“Scale: " + meta.getScale(i) ); } 29 Nội dung thực hành • Bước 1: Khởi động XAMPP Control Panel → Start các dịch vụ Apache và MySQL → chọn Admin để mở công cụ quản trị phpMyAdmin cho cơ sở dữ liệu MySQL • Hoặc có thể mở trình duyệt và truy cập vào: 9/23/2020 Department of Software Engineering - SOICT/HUST 30 Nội dung thực hành • Bước 2: Tạo cơ sở dữ liệu – Tại trang quản trị phpMyAdmin → chọn New – Nhập tên database và chọn Create (nhớ chọn Collation là utf8_unicode_ci) – Tạo một bảng dữ liệu và nhập các dữ liệu mẫu vào bảng 9/23/2020 Department of Software Engineering - SOICT/HUST 31 Nội dung thực hành • Bước 3: Xây dựng ứng dụng Java kết nối với MySQL – Khởi động Netbeans -> File -> New Project – Tải JDBC Driver cho MySQL và thêm vào project (https://dev.mysql.com/downloads/file/?id=465644 ) – Chọn tập tin jar -> chọn Open 9/23/2020 Department of Software Engineering - SOICT/HUST 32 Nội dung thực hành • Bước 3: Xây dựng ứng dụng Java kết nối với MySQL – Viết code để truy vấn dữ liệu từ bảng trong cơ sở dữ liệu và hiển thị ra console 9/23/2020 Department of Software Engineering - SOICT/HUST 33 Nội dung bài tập tự làm • Thực hành xây dựng chương trình java với các lệnh SQL cơ bản (SELECT, INSERT, UPDATE, DELETE) 9/23/2020 Department of Software Engineering - SOICT/HUST 34

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_nhap_mon_cong_nghe_phan_mem_tuan_2_vong_doi_phan_m.pdf