3.2 Example 2: SQL INSERT và DELETE
Để thêm sửa xoá dữ liệu, bạn cần dùng lệnh
executeUpdate()
để thực thi câu lệnh SQL. Phương thức trả về một int
chỉ số lượng bản ghi bị ảnh hưởng.
Bạn có thể đặt tên file là "
JdbcInsertTest.java
" , và sau đây là code ;) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import java.sql.*; // Use classes in java.sql package public class JdbcInsertTest { // Save as "JdbcUpdateTest.java" public static void main(String[] args) { try ( // Step 1: Allocate a database 'Connection' object Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/ebookshop?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC", "myuser", "xxxx"); // for MySQL only // Step 2: Allocate a 'Statement' object in the Connection Statement stmt = conn.createStatement(); ) { // Step 3 & 4: Execute a SQL INSERT|DELETE statement via executeUpdate(), // which returns an int indicating the number of rows affected. // DELETE records with id>=3000 and id<4000 String sqlDelete = "delete from books where id >= 3000 and id < 4000"; System.out.println("The SQL statement is: " + sqlDelete + "\n"); // Echo for debugging int countDeleted = stmt.executeUpdate(sqlDelete); System.out.println(countDeleted + " records deleted.\n"); // INSERT a record String sqlInsert = "insert into books values (3001, 'Gone Fishing', 'Kumar', 11.11, 11)"; System.out.println("The SQL statement is: " + sqlInsert + "\n"); // Echo for debugging int countInserted = stmt.executeUpdate(sqlInsert); System.out.println(countInserted + " records inserted.\n"); // INSERT multiple records sqlInsert = "insert into books values " + "(3002, 'Gone Fishing 2', 'Kumar', 22.22, 22)," + "(3003, 'Gone Fishing 3', 'Kumar', 33.33, 33)"; System.out.println("The SQL statement is: " + sqlInsert + "\n"); // Echo for debugging countInserted = stmt.executeUpdate(sqlInsert); System.out.println(countInserted + " records inserted.\n"); // INSERT a partial record sqlInsert = "insert into books (id, title, author) values (3004, 'Fishing 101', 'Kumar')"; System.out.println("The SQL statement is: " + sqlInsert + "\n"); // Echo for debugging countInserted = stmt.executeUpdate(sqlInsert); System.out.println(countInserted + " records inserted.\n"); // Issue a SELECT to check the changes String strSelect = "select * from books"; System.out.println("The SQL statement is: " + strSelect + "\n"); // Echo For debugging ResultSet rset = stmt.executeQuery(strSelect); while(rset.next()) { // Move the cursor to the next row System.out.println(rset.getInt("id") + ", " + rset.getString("author") + ", " + rset.getString("title") + ", " + rset.getDouble("price") + ", " + rset.getInt("qty")); } } catch(SQLException ex) { ex.printStackTrace(); } // Step 5: Close conn and stmt - Done automatically by try-with-resources } } |
Ghi chú:
- Bạn không thể chèn hai bản ghi có cùng
id
vì nó là giá trị của khóa chính. Do đó, chúng ta sẽ thực hiệnDELETE
trước khiINSERT
mới. Bằng cách này, bạn có thể chạy lại chương trình thỏa thích mà không bị lỗi trùng lặp bản ghi. - Nếu bạn thêm mới dữ liệu nhưng không insert vào toàn bộ các cột trong bảng, thì các cột không được INSERT sẽ nhận giá trị mặc định.
Bài tập 1:
Sửa đổi chương trình Java của bạn để thực hiện các câu lệnh SQL sau:
Sửa đổi chương trình Java của bạn để thực hiện các câu lệnh SQL sau:
- Xóa tất cả sách có id> 8000;
- Thêm cùng lúc 2 bản ghi (8001, 'Java Core', 'Dang Kim Thi', 15.55, 55) và (8002, 'Java Advanced', 'James Gosling', 25.55, 55);
- Thêm 1 cuốn sách có thông tin là (2001, 'Java JDBC MySQL', 'ThiDK');
- Xoá một cuối sách có id là do người dùng nhập vào, ví dụ id = 2001
- Thêm mới một cuốn sách có đầy đủ thông tin do người dùng nhập vào từ bàn phím
GiftShop là một cửa hàng bán quà tặng, có chức năng siêu tinh giản là như sau: xem, thêm và xoá quà tặng.
Đây là một bài toán tổng hợp, triển khai theo mẫu thiết kế MVC. MVC là viết tắt của từ Model, View và Controller. Trong đó, Model là phần chứa dữ liệu, View là giao diện người dùng, còn Controller là điều khiển. Ngoài ra, bài tập này cũng giúp các em củng cố kiến thức về OOP kết hợp với JDBC.
Đây là hướng dẫn mang tính chất gợi ý để các bạn giải quyết bài toán.
1. Tạo project tới là giftshop
2. Tạo packages giftmodel, trong package giftmodel thì có class tên là Gift.java
Class Gift.java có đủ thuộc tính id, name, price, qty
3. Tạo package giftcontroller, trong package giftcontroler thì có class tên là GiftController.java
Class GiftController.java sẽ chứa các phương thức để xử lý thêm xoá và truy vấn các đối tượng Book vào trong cơ sở dữ liệu. SELECT, INSERT, DELETE.
4. Tạo package giftview, trong package bookview thì có class để hiển thị dữ liệu đó là GiftShop.java
Class GiftShop.java người dùng có tính năng 1. chọn xem quà tặng, 2 thêm quà tặng, 3 xoá quà tặng.
Khi chọn 1 thì hiển thị toàn bộ sách có trong thư viện.
Khi chọn 2 thì cho người dùng nhập thông tin sách, nhập xong thì insert vào database
Khi chọn 3 thì cho người dùng nhập id sách muốn xoá, nhập xong thì delete trong databasae
Đăng nhận xét