Executando verificação de segurança...
3

Não é garantido que há dados na tabela, também não é garantido que todos os dados irão atender a condição WHERE.
Antes de ler o ResultSet tem que verificar com o método .next()

if( rs.next() )
{
    curso.setId(id);
    curso.setNomecurso(rs.getString("nomecurso"));
    curso.setNivel(rs.getString("nivel"));
    curso.setDuracao(rs.getInt("duracao"));
} //end if

Quando tiver a necessidade de percorrer todos os registros

while( rs.next() )
{
} //end while

Outra coisa, você não está fechando o PreparedStatement com o seu método .close() isso pode drenar recursos com o tempo.

Carregando publicação patrocinada...
1