sql >> Databasteknik >  >> RDS >> Mysql

Java och SQL :returnera null eller kast undantag?

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.



  1. MySQL jokertecken * och %

  2. Slinga n gånger utan att använda en lagrad procedur

  3. Hur exporterar och importerar jag en .sql-fil från kommandoraden med alternativ?

  4. Ingen sådan fil eller katalog eller ingen sådan värd är känd när migrering körs