Академический Документы
Профессиональный Документы
Культура Документы
BUSCAR
Login
HOME
NOTCIAS
ARTIGOS
FRUM
BUSCA
ENVIARNOTCIA
CONTRIBUIR
Curtir
2,9mil
131
Registrese
Seguir@javafree
Home>Artigos>BancodeDados>
AcessandobancodedadosemJava(PARTE1)
Publicadopordaltoncamargoem17/08/20091.021.299visualizaes
32
Like
53
comentrios:34
Umafuncionalidadeessencialemqualquersistemaahabilidadeparacomunicarsecomumrepositriodedados.Podemosdefinirrepositriodedadosdevrias
maneiras,porexemplo,comoumpooldeobjetosdenegcionumORBouumbancodedados.Bancosdedadosconstituemotipomaiscomumderepositrio.
JavadispedeumaAPIparaacessarrepositriosdedados:aJavaDataBaseConnectivityAPIouJDBCAPI.
AJDBCimplementaemJavaafuncionalidadedefinidapelopadroSQLCallLevelInterfaceouSQLCLI.UmoutroexemplodeAPIqueimplementaoSQLCallLevel
InterfaceopopularssimoODBCdasplataformasWintel.AmaioriadosfornecedoresdebancosdedadosofereceumaimplementaoparticulardeSQLCLI.A
vantagemdeJDBCaportabilidadedaaplicaocliente,inerentedalinguagemJava.AespecificaocorrentedaJDBCAPIa2.1.
A JDBC compreende uma especificao para ambos: os desenvolvedores de drivers JDBC e os desenvolvedores de aplicaes clientes que precisem acessar
bancosdedadosemJava.EstaremosdandoumaolhadanodesenvolvimentodeaplicaesemJava,ento,umaboaidiacomearcomosuportededados.
Existem4tiposdediferentesdedriversJDBC(paraumalistadefornecedoresporespecificaoetipo,videhttp://www.javasoft.com/products/jdbc/drivers.html):
Uma vez que ODBC uma especificao padro do mundo Wintel, o tipo 1 um driver de ponte entre Java e ODBC. O driver de ponte mais conhecido o
fornecido pela Sun o JDBCODBC bridge. Este tipo de driver no portvel, pois depende de chamadas a funes de ODBC implementadas em linguagem C e
compiladasparaWintel,ououtraplataformaODBCcompatvel,aschamadasfunesnativas.
Odrivertipo2implementadoparcialmenteemJavaeparcialmenteatravsdefunesnativasqueimplementamalgumaAPIespecficadofornecedordebanco
dedados.Estetipofazoquesechamadewrapout,ouseja,provumainterfaceJavaparaumaAPInativanoJava.
Otipo3umdrivertotalmenteJavaquesecomunicacomalgumtipodemiddlewarequeentosecomunicacomobancodedados
Otipo4umdrivertotalmenteJavaquevaidiretamenteaobancodedados.
NumaprximaparteveremosaindaumdrivergratuitoquepermiteacessarbancosdedadosqueofereamsuporteapenasaoBridge(tipo1)viarede.Veremosa
seguircomoacessarumbancodedadosatravsdeJDBC.NossocenriobsicoumapequenaaplicaodecontroledosmeusCDs(clssica!)implementadaem
algumxBasecompatvel.Emprximosexemplosiremosutilizaroutrosbancosdedados.
ParautilizarmosaJDBCnumprogramaemJava,precisamosdeclararopacotequecontmaJDBCAPI:
AcessandobancosdedadosemJDBC
importjava.sql.*;
Aprimeiracoisaafazerestabelecerumaconexocomobancodedados.Fazemosissoemdoispassos:primeirocarregamosodriverparaobancodedadosna
JVMdaaplicao(1).Umavezcarregado,odriverseregistraparaoDriverManagereestdisponvelparaaaplicao.UtilizamosentoaclasseDriverManager
paraabrirumaconexocomobancodedados(2).AinterfaceConnectiondesignaumobjeto,nocasocon,parareceberaconexoestabelecida:
try//AcapturadeexceesSQLExceptionemJavaobrigatriaparausarmosJDBC.
{
//Esteumdosmeiospararegistrarumdriver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();
//Registradoodriver,vamosestabelecerumaconexo
Connectioncon=DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");
}
catch(SQLExceptione)
{
//sehouvealgumerro,umaexceogeradaparainformaroerro
e.printStackTrace();//vejamosqueerrofoigeradoequemogerou
}
Estabelecidaaconexo,podemosexecutarcomandosSQLparaobancodedados.Vejamoscomorealizarumaconsultasobreottulo,numerodefaixaseoartista
decadaCDnobancodedados.Podemosusar3interfacesparaexecutarcomandosSQLnobancodedados.AprimeiradelasainterfaceStatement,quepermite
a execuo dos comandos fundamentais de SQL (SELECT, INSERT, UPDATE ou DELETE). A interface PreparedStatement nos permite usufruir de SQL
armazenado ou prcompilado no banco, quando o banco de dados suportar este recurso. A terceira interface CallableStatement, e permite executar
procedimentosefunesarmazenadosnobancoquandoobancosuportaresterecurso.VejamoscomoutilizarainterfaceStatement.Nosprximosartigossobre
JDBCiremosinvestigarasoutras.
//Apsestabelecermosaconexocomobancodedados
//UtilizamosomtodocreateStatementdeconparacriaroStatement
Statementstm=con.createStatement();
//VamosexecutaroseguintecomandoSQL:
StringSQL="Selecttitulo,autor,total_faixasfromMeusCDs";
AinterfaceResultSetpermitecolherosresultadosdaexecuodenossaquerynobancodedados.Estainterfaceapresentaumasriedemtodosparaprovero
acessoaosdados:
//DefinidooStatement,executamosaquerynobancodedados
ResultSetrs=stm.executeQuery(SQL);
//Omtodonext()informasehouveresultadoseposicionaocursordobanco
//naprximalinhadisponvelpararecuperao
//Comoesperamosvriaslinhasutilizamosumlaopararecuperarosdados
while(rs.next())
{
//OsmtodosgetXXXrecuperamosdadosdeacordocomotipoSQLdodado:
Stringtit=rs.getString("titulo");
Stringaut=rs.getString("autor");
inttotalFaixas=rs.getInt("total_faixas");
//Asvariveistit,autetotalFaixascontmosvaloresretornados
//pelaquery.Vamosimprimlos
System.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 isso
fechandooStatement,queliberaosrecursosassociadosexecuodestaconsultamasdeixaaconexoabertaparaaexecuodeumaprximaconsulta,ou
fechandodiretamenteaconexo,queencerraacomunicaocomobancodedados.Paratermoscertezadequevamosencerrarestaconexomesmoqueuma
exceoocorra,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,eledeveterumescopomaisamploqueoblocotry
Connectioncon=null;
try
{
//Esteumdosmeiospararegistrarumdriver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();
//Registradoodriver,vamosestabelecerumaconexo
con=DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");
//Apsestabelecermosaconexocomobancodedados
//UtilizamosomtodocreateStatementdeconparacriaroStatement
Statementstm=con.createStatement();
//VamosexecutaroseguintecomandoSQL:
StringSQL="Selecttitulo,autor,total_faixasfromMeusCDs";
//DefinidooStatement,executamosaquerynobancodedados
ResultSetrs=stm.executeQuery(SQL);
//Omtodonext()informasehouveresultadoseposicionaocursordobanco
//naprximalinhadisponvelpararecuperao
//Comoesperamosvriaslinhasutilizamosumlaopararecuperarosdados
while(rs.next())
{
//OsmtodosgetXXXrecuperamosdadosdeacordocomotipoSQLdodado:
Stringtit=rs.getString("titulo");
Stringaut=rs.getString("autor");
inttotalFaixas=rs.getInt("total_faixas");
//Asvariveistit,autetotalFaixascontmosvaloresretornados
//pelaquery.Vamosimprimlos
System.out.println(48:"Titulo:"+tit+"Autor:"+aut+"49:Tot.Faixas:"+totalFaixas);
}
}
catch(SQLExceptione)
{
//sehouvealgumerro,umaexceogeradaparainformaroerro
e.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:1parteDao
AcessandoDadoscomJava:Parte2Prevendoproblemas
QueraprendermaissobreJava?
OqueJava?
CaractersticasBsicas
OrientaoaObjetos
TutoriaisparaCertificaoJava
FundamentosdaLinguagem
Modificadores
Operadoreseatribuies
ControledeFluxo
OrientaoaObjetos
JavaLangeWrappers
ObjetoseConjuntos
ClassesInternas
Threads(Segmentos)
comentrios:34
TpicosRelacionados
Netbeans+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?
RSSNotcias
RSSFrum