@Override
    public void deleteProperty( String username, String propName )
    {
        Connection con = null;
        PreparedStatement pstmt = null;
        try
        {
            con = DbConnectionManager.getConnection();
            pstmt = con.prepareStatement( DELETE_PROPERTY );
            pstmt.setString( 1, username );
            pstmt.setString( 2, propName );
            pstmt.executeUpdate();
        }
        catch ( SQLException e )
        {
            Log.error( e.getMessage(), e );
        }
        finally
        {
            DbConnectionManager.closeConnection( pstmt, con );
        }
    }
Default implementation of the UserPropertyProvider interface, which reads and writes data from the
{@code ofUserProp} database table.

This implementation will not explicitly verify if a user exists, when operating on its properties. The methods of
this implementation will <em>not</em> throw {@link org.jivesoftware.openfire.user.UserNotFoundException}.

<b>Warning:</b> in virtually all cases a user property provider should not be used directly. Instead, use the
Map returned by {@link User#getProperties()} to create, read, update or delete user properties. Failure to do so
is likely to result in inconsistent data behavior and race conditions. Direct access to the user property
provider is only provided for special-case logic.

@author Guus der Kinderen, guus@goodbytes.nl
@see User#getProperties
xmppserver/src/main/java/org/jivesoftware/openfire/user/property/DefaultUserPropertyProvider.java