sql >> Database teknologi >  >> RDS >> Mysql

Java og SQL:returner null eller throw undtagelse?

Jeg ville undgå følgende

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

og brug i stedet en PreparedStatement med dens tilknyttede parametersætmetoder (setString() ) osv. Dette vil forhindre problemer med værdier for colValue at have anførselstegn og SQL-injektionsangreb (eller mere generelt colValue). danner en eller anden SQL-syntaks).

Jeg ville aldrig returner et nul, hvis samlingen blot var tom. Det virker meget kontraintuitivt og helt uventet fra kundens synspunkt.

Jeg vil ikke anbefale at returnere et nul i fejltilstande, da din klient eksplicit skal tjekke for dette (og sandsynligvis vil glemme). Jeg ville returnere en tom samling, hvis det skulle være nødvendigt (dette kan være analogt med din kommentar om et nulobjekt), eller mere sandsynligt afgive en undtagelse (afhængigt af omstændighederne og alvoren). Undtagelsen er nyttig, fordi den vil indeholde nogle oplysninger om den stødte fejl. Null fortæller dig ingenting.

Hvad skal du gøre, hvis du støder på et problem, mens du bygger en Dog objekt? Jeg tror, ​​det afhænger af, hvor robust og modstandsdygtig du ønsker, at din ansøgning skal være. Er det et problem at returnere et undersæt af Dog s, eller ville det være fuldstændig katastrofalt, og du skal rapportere dette? Det er et ansøgningskrav (jeg har tidligere været nødt til at tage højde for begge scenarier - bedste indsats eller alt-eller-intet ).

Et par observationer. Jeg ville bruge HashMap i stedet for den gamle Hashtable (synkroniseret for al adgang og, endnu vigtigere, ikke en ordentlig Collection - hvis du har en Collection du kan overføre det til en hvilken som helst anden metode og forvente hvilken som helst Collection ), og StringBuilder over StringBuffer af lignende årsager. Ikke et stort problem, men værd at vide.



  1. Tidsmæssigt databasedesign med et twist (live vs kladderækker)

  2. Oracle display mere end 24 timer

  3. Bestemmelse af påskedatoerne for ethvert år i Oracle PLSQL

  4. AndroidApp og MySqlConnection virkede ikke connection.open