sql >> Databáze >  >> RDS >> Mysql

Java a SQL:vrátí hodnotu null nebo vyvolá výjimku?

Vyhnul bych se následujícímu

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

a místo toho použijte PreparedStatement s přidruženými metodami nastavení parametrů (setString() ) atd. Předejdete tak problémům s hodnotami pro colValue s uvozovkami a útoky SQL injection (nebo obecněji colValue tvoří nějakou syntaxi SQL).

To bych nikdy vrátit hodnotu null, pokud byla kolekce pouze prázdná. To se zdá být velmi kontraintuitivní a z pohledu klienta zcela nečekané.

Nedoporučoval bych vracet hodnotu null v chybových podmínkách, protože váš klient to musí výslovně zkontrolovat (a pravděpodobně zapomene). V případě potřeby bych vrátil prázdnou sbírku (může to být analogické s vaším komentářem o nulovém objektu), nebo pravděpodobněji vyvolám výjimku (v závislosti na okolnostech a závažnosti). Výjimka je užitečná v tom, že ponese nějaké informace týkající se zjištěné chyby. Null vám nic neřekne.

Co byste měli dělat, když narazíte na problém při sestavování Dog objekt? Myslím, že to závisí na tom, jak robustní a odolný chcete, aby vaše aplikace byla. Je problém vrátit podmnožinu Dog s, nebo by to bylo naprosto katastrofální a musíte to nahlásit? To je požadavek aplikace (v minulosti jsem se musel postarat o oba scénáře – nejlepší úsilí nebo vše nebo nic ).

Pár postřehů. Použil bych HashMap spíše než starý Hashtable (synchronizováno pro veškerý přístup a, což je důležitější, není správná Collection - pokud máte Collection můžete jej předat jakékoli jiné metodě, která očekává jakékoli Collection ) a StringBuilder přes StringBuffer z podobných důvodů. Není to zásadní problém, ale stojí za to vědět.



  1. Nejúčinnější způsob, jak v SQL Server získat datum z data a času?

  2. Neplatné číslo parametru:nebyly svázány žádné parametry

  3. Pochopení nasazení Amazon Auroras Multi-AZ

  4. Dokumentace MAA pro Oracle Cloud