Sua aplicação é desktop ou client/server ?
vc pode usar o irepot/jasper e passar para ele o resultset, de forma que o ireport não precisará acessar o banco de dados diretamente.
Ou você pode configurá-lo para acessar o banco de dados. Então neste caso, passará um SQL para ele, alem de configurar o driver e colocar o jar do driver no classpath do relatorio.
Configurando ele para acessar diretamente o banco de dados, você perde a opção de ter um pool de conexões, o que otimizaria seu software. E ainda tornará o aplicativo mais dificil de dar manutenção, pois vai espalhar a configuração do seu banco em vários reports.
Se estiver desenvolvendo em client/server, eu adotaria o BIRT ao invés do IReport … pq eh muito muito muito mais fácil de fazer relatórios. Neste caso o birt poderia ser instalado como uma outra aplicação web e os relatórios apontariam para o JNDI do recurso Datasource do servidor de aplicações. E sua aplicação web acessaria a url do seu relatório BIRT
Não sei se o BIRT funciona em applicação desktop apenas …
O mais dificil do BIRT é fazer o SQL
o resto é fácil…