Bài đăng nổi bật


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 SQLPhươ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ú:
  1. 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ínhDo đó, chúng ta sẽ thực hiện DELETE trước khi INSERT 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. 
  2. 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:
  1. Xóa tất cả sách có id> 8000; 
  2. 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);
  3. Thêm 1 cuốn sách có thông tin là (2001, 'Java JDBC MySQL', 'ThiDK');
  4. Xoá một cuối sách có id là do người dùng nhập vào, ví dụ id = 2001
  5. 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 


Bài tập 2: 
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  

Post a Comment

Mới hơn Cũ hơn