Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cập nhật cột nếu giá trị đầu vào không rỗng, nếu không, hãy bỏ qua và giữ các giá trị hiện có của cột trong cơ sở dữ liệu

Bạn đang chèn thẳng tên người dùng vào SQL mà không cần thoát hoặc thậm chí trích dẫn. Tôi nghĩ đơn giản là bạn đã bỏ sót dấu nháy đơn.

Để ngăn chặn sự cố chèn SQL, KHÔNG BAO GIỜ chèn hằng số chuỗi SQL từ dữ liệu động, LUÔN LUÔN sử dụng PreparedStatement và chèn các điểm đánh dấu.

Ngoài ra, hãy thoát khỏi các giá trị, nhưng sử dụng các điểm đánh dấu sẽ an toàn hơn nhiều và cải thiện hiệu suất SQL bằng cách cho phép cơ sở dữ liệu lưu vào bộ nhớ cache câu lệnh SQL đã biên dịch.

String updateQuery = "UPDATE " + USER_TABLE +
                       " SET " + USER_TABLE_FIRST_NAME + "=IFNULL(? ," + USER_TABLE_FIRST_NAME + ")," +
                                 USER_TABLE_LAST_NAME + "=?," +
                                 USER_TABLE_ABOUT_ME + "=?," +
                                 USER_TABLE_CITY + "=?," +
                                 USER_TABLE_DOB + "=?" +
                     " WHERE " + USER_TABLE_ID + "=?";
PreparedStatement stmt = conn.prepareStatement(updateQuery);
stmt.setString(1, user.getFirstName());
stmt.setString(2, user.getLastName());
stmt.setString(3, user.getAboutMe());
stmt.setString(4, user.getCity());
stmt.setString(5, user.getDateOfBirth());
stmt.setString(6, user.getUserId());

Lưu ý: Câu trả lời được mở rộng để giải quyết vấn đề séc rỗng.

Khi bạn đang sử dụng chèn chuỗi đơn giản, "A='" + name + "'" trở thành A='Joe' cho một giá trị không phải null nhưng A='null' cho một giá trị null, đó chắc chắn không phải là những gì bạn muốn.

Bằng cách sử dụng các dấu tham số, giá trị của ? có thể là null , có nghĩa là IFNULL(?, Name) sẽ cung cấp hành vi chính xác cần thiết, tức là sử dụng giá trị của ? khi nó không rỗng và giá trị của NAME khi nào ? là null.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đặt lại mật khẩu gốc MySQL

  2. Cách xác định một số nguyên không dấu trong SQLAlchemy

  3. Tăng tốc độ xuất và nhập mysql

  4. Cách nhập CSV vào MySQL Workbench

  5. Cách thêm tổng số hàng trong MySQL