sql >> データベース >  >> RDS >> Mysql

JavaとSQL:nullを返すか、例外をスローしますか?

    次のことは避けたいです

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

    代わりに、PreparedStatement を使用してください。 関連するパラメーターセッターメソッド(setString() )など。これにより、colValueの値に関する問題が防止されます。 引用符があり、SQLインジェクション攻撃(またはより一般的にはcolValue いくつかのSQL構文を形成します。

    私は決して コレクションが単に空の場合はnullを返します。これは非常に直感に反しているように思われ、クライアントの観点からはまったく予想外です。

    クライアントがこれを明示的にチェックする必要があるため(おそらく忘れてしまうため)、エラー状態でnullを返すことはお勧めしません。必要に応じて空のコレクションを返すか(これはnullオブジェクトに対するコメントに類似している可能性があります)、または例外をスローする可能性が高くなります(状況と重大度によって異なります)。例外は、発生したエラーに関連する情報を保持するという点で便利です。ヌルは何も教えてくれません。

    Dogの作成中に問題が発生した場合はどうすればよいですか 物体 ?それは、アプリケーションの堅牢性と回復力に依存すると思います。 Dogのサブセットを返すのは問題ですか? s、またはそれは完全に壊滅的であり、これを報告する必要がありますか?これはアプリケーションの要件です(過去にどちらのシナリオにも対応する必要がありました-ベストエフォート またはオールオアナッシング

    いくつかの観察。 HashMap を使用します 古いHashtableではなく (すべてのアクセスに対して同期され、さらに重要なことに、適切なCollectionではありません -Collectionがある場合 anyを期待する他のメソッドに渡すことができます Collection )、および StringBuilder StringBufferを介して 同様の理由で。大きな問題ではありませんが、知っておく価値があります。



    1. SQL ServerのTRIM、LTRIM、およびRTRIM関数

    2. [最初の文字がBで始まる]すべてを選択します

    3. 名前が母音で始まり、母音で終わるかどうかを確認するSQLクエリ

    4. HadoopでApacheエアフローを使用してMySqlを構成する際の問題に直面しています