Jag skulle undvika följande
sql.append("SELECT * FROM ").append("dogs_table");
sql.append(" WHERE ").append(colName).append("='");
sql.append(colValue).append("'");
och använd istället en PreparedStatement
med dess associerade parameterinställningsmetoder (setString()
) etc. Detta kommer att förhindra problem med värden för colValue
med citattecken och SQL-injektionsattacker (eller mer allmänt, colValue
bildar en viss SQL-syntax).
Jag skulle aldrig returnera en noll om samlingen bara var tom. Det verkar väldigt kontraintuitivt och helt oväntat ur kundens synvinkel.
Jag skulle inte rekommendera att returnera en noll i feltillstånd, eftersom din klient uttryckligen måste kontrollera detta (och förmodligen kommer att glömma). Jag skulle returnera en tom samling om det skulle behövas (detta kan vara analogt med din kommentar om ett nullobjekt), eller mer sannolikt kasta ett undantag (beroende på omständigheterna och svårighetsgraden). Undantaget är användbart eftersom det kommer att innehålla viss information om felet som påträffats. Null säger ingenting.
Vad ska du göra om du stöter på ett problem när du bygger en Dog
objekt? Jag tror att det beror på hur robust och motståndskraftig du vill att din applikation ska vara. Är det ett problem att returnera en delmängd av Dog
s, eller skulle det vara helt katastrofalt och du måste rapportera detta? Det är ett applikationskrav (jag har varit tvungen att tillgodose båda scenarierna tidigare - bästa ansträngning eller allt-eller-inget ).
Ett par observationer. Jag skulle använda HashMap
snarare än den gamla Hashtable
(synkroniserad för all åtkomst och, ännu viktigare, inte en riktig Collection
- om du har en Collection
du kan skicka den till vilken annan metod som helst och förvänta dig vilken som helst Collection
), och StringBuilder
över StringBuffer
av liknande skäl. Inget stort problem, men värt att veta.