Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Java i SQL :zwróć null lub wyrzuć wyjątek?

Unikałbym następujących

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

zamiast tego użyj PreparedStatement z powiązanymi metodami ustawiania parametrów (setString() ) itp. Zapobiegnie to problemom z wartościami dla colValue posiadanie cudzysłowów i ataki typu SQL injection (lub bardziej ogólnie, colValue tworząc jakąś składnię SQL).

nigdy zwróć wartość null, jeśli kolekcja była po prostu pusta. Wydaje się to bardzo sprzeczne z intuicją i całkowicie nieoczekiwane z punktu widzenia klienta.

Nie zalecałbym zwracania wartości null w warunkach błędu, ponieważ klient musi to wyraźnie sprawdzić (i prawdopodobnie zapomni). W razie potrzeby zwróciłbym pustą kolekcję (może to być analogiczne do twojego komentarza dotyczącego obiektu zerowego) lub, co bardziej prawdopodobne, rzuciłbym wyjątek (w zależności od okoliczności i wagi). Wyjątek jest przydatny, ponieważ zawiera pewne informacje dotyczące napotkanego błędu. Null nic ci nie powie.

Co powinieneś zrobić, jeśli napotkasz problem podczas budowania Dog? obiekt ? Myślę, że to zależy od tego, jak solidna i elastyczna ma być Twoja aplikacja. Czy zwrócenie podzbioru Dog jest problemem? s, czy byłoby to kompletnie katastrofalne i trzeba to zgłosić ? Jest to wymóg dotyczący aplikacji (w przeszłości musiałem uwzględnić oba scenariusze — najlepszy wysiłek lub wszystko albo nic ).

Kilka obserwacji. Używałbym HashMap zamiast starego Hashtable (zsynchronizowany dla wszystkich dostępów i, co ważniejsze, nie właściwa Collection - jeśli masz Collection możesz przekazać go do dowolnej innej metody, oczekując dowolnej Collection ) oraz StringBuilder ponad StringBuffer z podobnych powodów. Nie jest to poważny problem, ale warto wiedzieć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Widoki MySQL

  2. Serwer MySQL zniknął - dokładnie za 60 sekund

  3. Jak znajdę drugą co do wielkości pensję z tabeli pracowników?

  4. Co to jest CHAR_LENGTH() w MySQL?

  5. ustawianie wielu kolumn za pomocą jednej aktualizacji