Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Java und SQL:Null zurückgeben oder Ausnahme auslösen?

Ich würde Folgendes vermeiden

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

und verwenden Sie stattdessen ein PreparedStatement mit den zugehörigen Parameter-Setter-Methoden (setString() ) usw. Dies verhindert Probleme mit Werten für colValue mit Anführungszeichen und SQL-Injection-Angriffen (oder allgemeiner colValue Bildung einer SQL-Syntax).

Ich würde nie gibt eine Null zurück, wenn die Auflistung lediglich leer war. Das erscheint sehr kontraintuitiv und aus der Sicht des Kunden völlig unerwartet.

Ich würde nicht empfehlen, unter Fehlerbedingungen eine Null zurückzugeben, da Ihr Client dies explizit prüfen muss (und wahrscheinlich vergessen wird). Ich würde bei Bedarf eine leere Sammlung zurückgeben (dies kann Ihrem Kommentar zu einem Nullobjekt entsprechen) oder eher eine Ausnahme auslösen (abhängig von den Umständen und dem Schweregrad). Die Ausnahme ist insofern nützlich, als sie einige Informationen bezüglich des aufgetretenen Fehlers enthält. Null sagt Ihnen nichts.

Was sollten Sie tun, wenn beim Erstellen eines Dog ein Problem auftritt Objekt ? Ich denke, das hängt davon ab, wie robust und belastbar Ihre Anwendung sein soll. Ist es ein Problem, eine Teilmenge von Dog zurückzugeben s, oder wäre es völlig katastrophal und Sie müssen dies melden? Das ist eine Anwendungsanforderung (ich musste in der Vergangenheit für beide Szenarien sorgen - best-effort oder alles oder nichts ).

Ein paar Beobachtungen. Ich würde HashMap verwenden statt der alten Hashtable (für alle Zugriffe synchronisiert und, was noch wichtiger ist, keine richtige Collection - wenn Sie eine Collection haben Sie können es an jede andere Methode übergeben, die any erwartet Collection ) und StringBuilder über StringBuffer aus ähnlichen Gründen. Kein großes Problem, aber wissenswert.