Acessando banco de dados em Java (PARTE 1) - Java Free.pdf

Post on 14-Nov-2015

214 views 2 download

Transcript of Acessando banco de dados em Java (PARTE 1) - Java Free.pdf

  • Assine08007033000 SAC Batepapo Email Notcias Esporte Entretenimento Mulher Shopping BUSCAR

    2,9milCurtir 131 Seguir@javafree

    Login Registrese

    Home>Artigos>BancodeDados>

    AcessandobancodedadosemJava(PARTE1)Publicadopordaltoncamargoem17/08/20091.021.299visualizaes

    comentrios:34

    Umafuncionalidadeessencialemqualquersistemaahabilidadeparacomunicarsecomumrepositriodedados.Podemosdefinirrepositriodedadosdevriasmaneiras,porexemplo,comoumpooldeobjetosdenegcionumORBouumbancodedados.Bancosdedadosconstituemotipomaiscomumderepositrio.JavadispedeumaAPIparaacessarrepositriosdedados:aJavaDataBaseConnectivityAPIouJDBCAPI.

    AJDBCimplementaemJavaafuncionalidadedefinidapelopadroSQLCallLevelInterfaceouSQLCLI.UmoutroexemplodeAPIqueimplementaoSQLCallLevelInterfaceopopularssimoODBCdasplataformasWintel.AmaioriadosfornecedoresdebancosdedadosofereceumaimplementaoparticulardeSQLCLI.AvantagemdeJDBCaportabilidadedaaplicaocliente,inerentedalinguagemJava.AespecificaocorrentedaJDBCAPIa2.1.

    A JDBC compreende uma especificao para ambos: os desenvolvedores de drivers JDBC e os desenvolvedores de aplicaes clientes que precisem acessarbancosdedadosemJava.EstaremosdandoumaolhadanodesenvolvimentodeaplicaesemJava,ento,umaboaidiacomearcomosuportededados.

    Existem4tiposdediferentesdedriversJDBC(paraumalistadefornecedoresporespecificaoetipo,videhttp://www.javasoft.com/products/jdbc/drivers.html):

    UmavezqueODBCumaespecificaopadrodomundoWintel,o tipo1umdriverdeponteentreJavaeODBC.OdriverdepontemaisconhecidoofornecidopelaSunoJDBCODBCbridge.Estetipodedrivernoportvel,poisdependedechamadasa funesdeODBC implementadasemlinguagemCecompiladasparaWintel,ououtraplataformaODBCcompatvel,aschamadasfunesnativas.

    Odrivertipo2implementadoparcialmenteemJavaeparcialmenteatravsdefunesnativasqueimplementamalgumaAPIespecficadofornecedordebancodedados.Estetipofazoquesechamadewrapout,ouseja,provumainterfaceJavaparaumaAPInativanoJava.

    Otipo3umdrivertotalmenteJavaquesecomunicacomalgumtipodemiddlewarequeentosecomunicacomobancodedados

    Otipo4umdrivertotalmenteJavaquevaidiretamenteaobancodedados.

    NumaprximaparteveremosaindaumdrivergratuitoquepermiteacessarbancosdedadosqueofereamsuporteapenasaoBridge(tipo1)viarede.VeremosaseguircomoacessarumbancodedadosatravsdeJDBC.NossocenriobsicoumapequenaaplicaodecontroledosmeusCDs(clssica!)implementadaemalgumxBasecompatvel.Emprximosexemplosiremosutilizaroutrosbancosdedados.ParautilizarmosaJDBCnumprogramaemJava,precisamosdeclararopacotequecontmaJDBCAPI:

    AcessandobancosdedadosemJDBC

    importjava.sql.*;

    Aprimeiracoisaafazerestabelecerumaconexocomobancodedados.Fazemosissoemdoispassos:primeirocarregamosodriverparaobancodedadosnaJVMdaaplicao(1).Umavezcarregado,odriverseregistraparaoDriverManagereestdisponvelparaaaplicao.UtilizamosentoaclasseDriverManagerparaabrirumaconexocomobancodedados(2).AinterfaceConnectiondesignaumobjeto,nocasocon,parareceberaconexoestabelecida:

    try//AcapturadeexceesSQLExceptionemJavaobrigatriaparausarmosJDBC.{//EsteumdosmeiospararegistrarumdriverClass.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();//Registradoodriver,vamosestabelecerumaconexoConnectioncon=DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");}catch(SQLExceptione){//sehouvealgumerro,umaexceogeradaparainformaroerroe.printStackTrace();//vejamosqueerrofoigeradoequemogerou}

    Estabelecidaaconexo,podemosexecutarcomandosSQLparaobancodedados.Vejamoscomorealizarumaconsultasobreottulo,numerodefaixaseoartista

    HOME NOTCIAS ARTIGOS FRUM BUSCA ENVIARNOTCIA CONTRIBUIR

    2 53Like32

  • decadaCDnobancodedados.Podemosusar3interfacesparaexecutarcomandosSQLnobancodedados.AprimeiradelasainterfaceStatement,quepermitea execuo dos comandos fundamentais de SQL (SELECT, INSERT, UPDATE ou DELETE). A interface PreparedStatement nos permite usufruir de SQLarmazenado ou prcompilado no banco, quando o banco de dados suportar este recurso. A terceira interface CallableStatement, e permite executarprocedimentosefunesarmazenadosnobancoquandoobancosuportaresterecurso.VejamoscomoutilizarainterfaceStatement.NosprximosartigossobreJDBCiremosinvestigarasoutras.

    //Apsestabelecermosaconexocomobancodedados//UtilizamosomtodocreateStatementdeconparacriaroStatementStatementstm=con.createStatement();//VamosexecutaroseguintecomandoSQL:StringSQL="Selecttitulo,autor,total_faixasfromMeusCDs";

    AinterfaceResultSetpermitecolherosresultadosdaexecuodenossaquerynobancodedados.Estainterfaceapresentaumasriedemtodosparaproveroacessoaosdados:

    //DefinidooStatement,executamosaquerynobancodedadosResultSetrs=stm.executeQuery(SQL);//Omtodonext()informasehouveresultadoseposicionaocursordobanco//naprximalinhadisponvelpararecuperao//Comoesperamosvriaslinhasutilizamosumlaopararecuperarosdadoswhile(rs.next()){//OsmtodosgetXXXrecuperamosdadosdeacordocomotipoSQLdodado:Stringtit=rs.getString("titulo");Stringaut=rs.getString("autor");inttotalFaixas=rs.getInt("total_faixas");//Asvariveistit,autetotalFaixascontmosvaloresretornados//pelaquery.VamosimprimlosSystem.out.println("Titulo:"+tit+"Autor:"+aut+"Tot.Faixas:"+totalFaixas);}

    E nosso acesso est terminado. O importante agora liberar os recursos alocados pelo banco de dados para a execuo deste cdigo. Podemos fazer issofechandooStatement,queliberaosrecursosassociadosexecuodestaconsultamasdeixaaconexoabertaparaaexecuodeumaprximaconsulta,oufechandodiretamenteaconexo,queencerraacomunicaocomobancodedados.Paratermoscertezadequevamosencerrarestaconexomesmoqueumaexceoocorra,reservamosofechamentoparaaclusulafinally()dotratamentodeexcees.

    finally{try{con.close();}catch(SQLExceptiononConClose){System.out.println("Houveerronofechamentodaconexo");onConClose.printStackTrace();}}

    Umaclasseparalistarumatabela

    Vamoscolocartudoissoemconjuntoparatermosumavisoemperspectiva:

    packagewlss.jdbcTutorial;importjava.sql.*;classExemplo1{publicstaticvoidmain(Stringargs[]){//AcapturadeexceesSQLExceptionemJavaobrigatriaparausarmosJDBC.//Paratermosacessoaoobjetocon,eledeveterumescopomaisamploqueoblocotryConnectioncon=null;try

  • comentrios:34

    {//EsteumdosmeiospararegistrarumdriverClass.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();//Registradoodriver,vamosestabelecerumaconexocon=DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");//Apsestabelecermosaconexocomobancodedados//UtilizamosomtodocreateStatementdeconparacriaroStatementStatementstm=con.createStatement();//VamosexecutaroseguintecomandoSQL:StringSQL="Selecttitulo,autor,total_faixasfromMeusCDs";//DefinidooStatement,executamosaquerynobancodedadosResultSetrs=stm.executeQuery(SQL);//Omtodonext()informasehouveresultadoseposicionaocursordobanco//naprximalinhadisponvelpararecuperao//Comoesperamosvriaslinhasutilizamosumlaopararecuperarosdadoswhile(rs.next()){//OsmtodosgetXXXrecuperamosdadosdeacordocomotipoSQLdodado:Stringtit=rs.getString("titulo");Stringaut=rs.getString("autor");inttotalFaixas=rs.getInt("total_faixas");//Asvariveistit,autetotalFaixascontmosvaloresretornados//pelaquery.VamosimprimlosSystem.out.println(48:"Titulo:"+tit+"Autor:"+aut+"49:Tot.Faixas:"+totalFaixas);}}catch(SQLExceptione){//sehouvealgumerro,umaexceogeradaparainformaroerroe.printStackTrace();//vejamosqueerrofoigeradoequemogerou}finally{try{con.close();}catch(SQLExceptiononConClose){System.out.println("Houveerronofechamentodaconexo");onConClose.printStackTrace();}}//fimdoblocotrycatchfinally}//fimdamain}//fimdenossoprimeiroexemplo!

    NaprximapartedesteartigoiremosanalisarasextensesintroduzidaspelaAPI2.1easinterfacesPreparedStatementeCallableStatement.

    Leiatambm:AcessandoBancodeDadosemJava(PARTE2)AcessandoBancodeDadosemJava(PARTE3)

    AplicativoJavaacessandobancodedados:AplicativoJavacomacessoabancodedados:1parteDaoAcessandoDadoscomJava:Parte2Prevendoproblemas

    QueraprendermaissobreJava?OqueJava?CaractersticasBsicasOrientaoaObjetos

    TutoriaisparaCertificaoJavaFundamentosdaLinguagemModificadoresOperadoreseatribuiesControledeFluxoOrientaoaObjetosJavaLangeWrappersObjetoseConjuntosClassesInternasThreads(Segmentos)

  • RSSNotciasRSSFrum

    TpicosRelacionadosNetbeans+SQLServer2012

    BloquearTelasnoSwing

    Ireport

    JSFpginascomacessoaoBDparadefuncionarapsalgumtempo

    JAVAGUIcomMYSQLcadastro

    VagaLderProjetistaJava

    ConsultaemBancodeDadosQueDependedoResultadodeumaConsultaAnterior

    loginemjavadesktop

    NoConsegueAcessarOBancoDeDadosMySQLAcredito!!!

    ComocriarosControllers?

    Locadoraemjava

    AcessoRemotodeBancodeDadosPostgreSQL

    AssociarusuariohaumID

    Alteraodedadosjava+mySQL

    InstalaodeSistemanamaquinadoCliente

    BancodeDadosBluej

    AjudaJava+MySQL

    DEVJavaSoPaulo/SP

    Usarbancoemjavajestandoconectado

    parseInteparseDouble

    Sistemajavadesktopcombancodedadosrodandoemvriasmquinas

    BancodeDadosPostgreSQLcomaopoi

    criaruminstaladorparaprogramasfeitocomnetbeansemysql

    MeconecteiaoBancodeDados,comofaoparainserirdados?

    Home Sobre Anuncie

    OJavaFree.orgumacomunidadejavaformadapelacoolaboraodosdesenvolvedoresdatecnologiajava.Apublicaodeartigosalmdeajudaracomunidadejava,ajudaadarmaiorvisibilidadeparaoautor.Contribuaconosco.