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
34 trang |
Chia sẻ: hachi492 | Ngày: 05/01/2022 | Lượt xem: 527 | Lượt tải: 0
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:
- bai_giang_nhap_mon_cong_nghe_phan_mem_tuan_2_vong_doi_phan_m.pdf