Query para buscar por data(CURDATE, INTERVAL) [RESOLVIDO!]

Opa código com as correções:

	public List<Evento> listar2() {
		
		PreparedStatement stmt = null;
		ResultSet rs = null;
		List<Evento> eventos = new ArrayList<Evento>();
		
		try {
		
			Calendar dataHoje = Calendar.getInstance(); 
			Calendar dataIni = Calendar.getInstance(); 
			Calendar dataFim = Calendar.getInstance(); 

			dataHoje.add(Calendar.DAY_OF_MONTH,-3);
			
			dataIni.setTime(dataHoje.getTime());
			
			dataFim.setTime(dataIni.getTime());
			
			dataFim.add(Calendar.DAY_OF_MONTH,7); 
			
			stmt = this.connection.prepareStatement("SELECT * FROM eventos WHERE eventos.data BETWEEN ? and ? ORDER BY data, horario");	
			
			stmt.setDate(1, new java.sql.Date(dataIni.getTimeInMillis()));  
		    stmt.setDate(2, new java.sql.Date(dataFim.getTimeInMillis())); 
			
			rs = stmt.executeQuery();
			
				while (rs.next()) { 
					eventos.add(populaEvento(rs));
				}
			
			
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		
		
		finally{
			
			if(rs !=null){ 
			    try{  
			    	rs.close();  
			   }catch(SQLException exc1){  
				   throw new RuntimeException(exc1);    
			   }
			  } 
			
			if(stmt!=null){  
			   try{  
				   stmt.close();   
			  }catch(SQLException exc2){  
			      throw new RuntimeException(exc2);    
			   }  
			 }
		}
		
		return eventos;
	}

Isso.
Vê se funciona e tenta principalmente entender o código.
Qualquer coisa coloca um novo tópico aí ou me manda uma mp.

Vlw.