Mysql
 sql >> база данни >  >> RDS >> Mysql

Java и SQL:връщане на null или хвърляне на изключение?

Бих избегнал следното

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

и вместо това използвайте PreparedStatement със свързаните с него методи за настройка на параметри (setString() ) и т.н. Това ще предотврати проблеми със стойностите за colValue имащи кавички и атаки с инжектиране на SQL (или по-общо, colValue формиране на някакъв SQL синтаксис).

Бих никога върнете нула, ако колекцията е просто празна. Това изглежда много противоинтуитивно и напълно неочаквано от гледна точка на клиента.

Не бих препоръчал връщане на нула в условия за грешка, тъй като клиентът ви трябва изрично да провери за това (и вероятно ще забрави). Бих върнал празна колекция, ако е необходимо (това може да е аналогично на коментара ви за нулев обект) или по-вероятно да пусна изключение (в зависимост от обстоятелствата и сериозността). Изключението е полезно с това, че ще носи известна информация, свързана с възникналата грешка. Null не ви казва нищо.

Какво трябва да направите, ако срещнете проблем, докато създавате Dog обект ? Мисля, че това зависи от това колко стабилно и издръжливо искате да бъде вашето приложение. Проблем ли е да се върне подмножество от Dog s, или би било напълно катастрофално и трябва да докладвате за това? Това е изискване за кандидатстване (трябваше да се погрижа за всеки сценарий в миналото - най-добро усилие или всичко или нищо ).

Няколко наблюдения. Бих използвал HashMap вместо старата Hashtable (синхронизиран за целия достъп и, което е по-важно, не е подходяща Collection - ако имате Collection можете да го предадете на всеки друг метод, очаквайки който и да е Collection ), и StringBuilder през StringBuffer поради подобни причини. Не е сериозен проблем, но си струва да се знае.



  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_encode()?

  2. Има ли лесен начин за конвертиране на MySQL данни в главни букви?

  3. Mysql не стартира - ibdata1 е повреден? - грешка в операционната система номер 13 - проблем с разрешенията

  4. mysql SQL:конкретен елемент да бъде първи и след това да сортирате останалите елементи

  5. MySQL – Обяснено кодиране и съпоставяне на набор от символи в базата данни