Вы находитесь на странице: 1из 4

Assine08007033000 SAC Batepapo

Email Notcias Esporte Entretenimento Mulher Shopping

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?

Home Sobre Anuncie


OJavaFree.orgumacomunidadejavaformadapelacoolaboraodosdesenvolvedoresdatecnologiajava.A
publicaodeartigosalmdeajudaracomunidadejava,ajudaadarmaiorvisibilidadeparaoautor.Contribua
conosco.

RSSNotcias
RSSFrum

Вам также может понравиться