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

JavaでSQL文字列を構築する最もクリーンな方法

    まず、プリペアドステートメントでクエリパラメータを使用することを検討してください。

    PreparedStatement stm = c.prepareStatement("UPDATE user_table SET name=? WHERE id=?");
    stm.setString(1, "the name");
    stm.setInt(2, 345);
    stm.executeUpdate();
    

    実行できるもう1つのことは、すべてのクエリをプロパティファイルに保持することです。たとえば、querys.propertiesファイルでは、上記のクエリを配置できます。

    update_query=UPDATE user_table SET name=? WHERE id=?
    

    次に、単純なユーティリティクラスの助けを借りて:

    public class Queries {
    
        private static final String propFileName = "queries.properties";
        private static Properties props;
    
        public static Properties getQueries() throws SQLException {
            InputStream is = 
                Queries.class.getResourceAsStream("/" + propFileName);
            if (is == null){
                throw new SQLException("Unable to load property file: " + propFileName);
            }
            //singleton
            if(props == null){
                props = new Properties();
                try {
                    props.load(is);
                } catch (IOException e) {
                    throw new SQLException("Unable to load property file: " + propFileName + "\n" + e.getMessage());
                }           
            }
            return props;
        }
    
        public static String getQuery(String query) throws SQLException{
            return getQueries().getProperty(query);
        }
    
    }
    

    次のようにクエリを使用できます:

    PreparedStatement stm = c.prepareStatement(Queries.getQuery("update_query"));
    

    これはかなり単純な解決策ですが、うまく機能します。



    1. ストアドプロシージャまたは関数は、提供されていないパラメータを予期しています

    2. SQLServerで複合主キーを作成する

    3. ID値を返すときのExecuteScalarとExecuteNonQuery

    4. Oracle NULLIF()関数