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

Java và SQL:trả về null hay ném ngoại lệ?

Tôi muốn tránh những điều sau

   sql.append("SELECT * FROM ").append("dogs_table");
   sql.append(" WHERE ").append(colName).append("='");
                        sql.append(colValue).append("'");

và thay vào đó, hãy sử dụng Chuẩn bị sẵn sàng với các phương thức thiết lập tham số được liên kết của nó (setString() ) v.v ... Điều này sẽ ngăn chặn sự cố với các giá trị cho colValue có dấu ngoặc kép và các cuộc tấn công chèn SQL (hoặc nói chung là colValue tạo một số cú pháp SQL).

Tôi sẽ không bao giờ trả về giá trị null nếu bộ sưu tập chỉ trống rỗng. Điều đó có vẻ rất phản trực giác và hoàn toàn bất ngờ theo quan điểm của khách hàng.

Tôi không khuyên bạn nên trả về giá trị null trong các điều kiện lỗi, vì khách hàng của bạn phải kiểm tra rõ ràng điều này (và có thể sẽ quên). Tôi sẽ trả lại một bộ sưu tập trống nếu cần (điều này có thể tương tự với nhận xét của bạn là một đối tượng rỗng), hoặc nhiều khả năng sẽ đưa ra một ngoại lệ (tùy thuộc vào trường hợp và mức độ nghiêm trọng). Ngoại lệ hữu ích ở chỗ nó sẽ mang một số thông tin liên quan đến lỗi gặp phải. Null không nói gì với bạn.

Bạn nên làm gì nếu gặp sự cố trong khi xây dựng Dog vật ? Tôi nghĩ rằng điều đó phụ thuộc vào việc bạn muốn ứng dụng của mình trở nên mạnh mẽ và linh hoạt như thế nào. Có vấn đề gì không khi trả về một tập hợp con của Dog s, hoặc nó sẽ hoàn toàn thảm khốc và bạn cần phải báo cáo điều này? Đó là yêu cầu ứng dụng (trước đây tôi đã phải đáp ứng cho cả hai trường hợp - nỗ lực hết mình hoặc tất cả hoặc không có gì ).

Một vài nhận xét. Tôi sẽ sử dụng HashMap thay vì Hashtable cũ (được đồng bộ hóa cho tất cả quyền truy cập và quan trọng hơn, không phải là một Collection thích hợp - nếu bạn có Collection bạn có thể chuyển nó đến bất kỳ phương thức nào khác mong đợi bất kỳ Collection ) và StringBuilder qua StringBuffer vì những lý do tương tự. Không phải là một vấn đề lớn, nhưng đáng để biết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_UNQUOTE () - Xóa trích dẫn khỏi tài liệu JSON trong MySQL

  2. XmlHTTPRequest:Lỗi phân tích cú pháp XML:không tìm thấy phần tử

  3. Có danh sách ký tự không được phép cho các tên cột của bảng mysql không?

  4. Kết quả này chỉ là tập hợp kết quả chuyển tiếp, việc gọi rewind () sau khi chuyển tiếp không được hỗ trợ - Zend

  5. Flask-Sqlalchemy Thiếu BEGIN dường như gây ra các phiên không đồng bộ hóa