com Java e MySQL
com Java e MySQL
Prof. Jorge Viana Doria Junior, M.Sc. Prof. Jorge Viana Doria Junior, M.Sc. Mestre em Informática DCC/IM/iNC/!"#J Mestre em Informática DCC/IM/iNC/!"#J
$$unior%unicarioca.e&u.'r $$unior%unicarioca.e&u.'r
Tecnologias envolvidas:
Tecnologias envolvidas:
Java, JDBC, MySQL e
Java, JDBC, MySQL e NetBeans
NetBeans
•
• Nesta au(a voc) vai a*ren&er &e maneira muito sim*(esNesta au(a voc) vai a*ren&er &e maneira muito sim*(es
e o'$etiva a cria+o uma a*(ica+o
e o'$etiva a cria+o uma a*(ica+o CRUD JAVACRUD JAVA CCreate,reate,
R
Rea&,ea&, UU*&ate e*&ate e DDe(ete no Net0eans *ara aten&ere(ete no Net0eans *ara aten&er tarefas sim*(es e rá*i&as.
tarefas sim*(es e rá*i&as.
•
• 1*ren&eremos a inserir, atua(i2ar, e3c(uir e (istar &a&os1*ren&eremos a inserir, atua(i2ar, e3c(uir e (istar &a&os
&e um formu(ário em 'anco &e &a&os
&e um formu(ário em 'anco &e &a&os MySQLMySQL com a com a
classe Stateent
Tecnologias envolvidas:
Tecnologias envolvidas:
Java, JDBC, MySQL e
Java, JDBC, MySQL e NetBeans
NetBeans
•
• Nesta au(a voc) vai a*ren&er &e maneira muito sim*(esNesta au(a voc) vai a*ren&er &e maneira muito sim*(es
e o'$etiva a cria+o uma a*(ica+o
e o'$etiva a cria+o uma a*(ica+o CRUD JAVACRUD JAVA CCreate,reate,
R
Rea&,ea&, UU*&ate e*&ate e DDe(ete no Net0eans *ara aten&ere(ete no Net0eans *ara aten&er tarefas sim*(es e rá*i&as.
tarefas sim*(es e rá*i&as.
•
• 1*ren&eremos a inserir, atua(i2ar, e3c(uir e (istar &a&os1*ren&eremos a inserir, atua(i2ar, e3c(uir e (istar &a&os
&e um formu(ário em 'anco &e &a&os
&e um formu(ário em 'anco &e &a&os MySQLMySQL com a com a
classe Stateent
•
• 5 MySQL5 MySQL 6 um sistema gerencia&or &e 'anco &e &a&os S70D, 6 um sistema gerencia&or &e 'anco &e &a&os S70D,
8ue uti(i2a a (inguagem SQL Linguagem &e Consu(ta strutura&a, 8ue uti(i2a a (inguagem SQL Linguagem &e Consu(ta strutura&a, &o ing()s
&o ing()s Structured Query LanguageStructured Query Language como interface. 9 como interface. 9 atua(mente um &os 'ancos &e &a&os mais *o*u(ares, com mais atua(mente um &os 'ancos &e &a&os mais *o*u(ares, com mais &e :; mi(4<es &e
&e :; mi(4<es &e insta(a+<es *e(o mun&o.insta(a+<es *e(o mun&o.
•
• ntre os usuários &o 'anco &e &a&os MySQL esto=ntre os usuários &o 'anco &e &a&os MySQL esto= NASANASA,,
"#iendste#
"#iendste#,, Banco B#adescoBanco B#adesco,, DATA$R%VDATA$R%V,, &$&$,, No'iaNo'ia,, SonySony,, L!(t)ansa
L!(t)ansa,, $et#o*#as$et#o*#as,, U+S+ A#yU+S+ A#y,, U+S+ "ede#al Rese#veU+S+ "ede#al Rese#ve Ban'
Ban' ,, Associated $#essAssociated $#ess,, Alcatel Slas)dotAlcatel Slas)dot,, Cisco SystesCisco Systes,, oogle
AT%N-./
• Siga os *assos &etermina&os. • 0rin8ue e a*ren&erá.
• >ente fa2er o 8ue 6 so(icita&o. • Muita aten+o aos comentários.
• 9 im*ortante e fa+a *ara ver o 8ue acontece. • Irá &esco'rir a(gumas coisas *or si s?.
• Consi&ere isto um DS1"I5.
• Perce'a e $á estará a*ren&en&o muito.
$asso 0: 1nstala23o do Banco de
Dados MySQL
• 1ntes &e mais na&a, 6 necessário fa2er a insta(a+o &o
MySQL em sua má8uina.
• Portanto, (eia o PD" MySQL 4 Man!al de
• Para insta(ar o NetBeans, fa+a o &onB(oa& no site
a'ai3o e e3ecute o insta(a&or. Lem'rese, voc) &everá ter insta(a&o o Java 6=
• 4tt*s=//net'eans.org/&oBn(oa&s/in&e3.4tm(
$asso 7: 1nstala23o da 1D%
NetBeans
$asso 8: C#ia23o de ! Banco de Dados e Ta*ela Al!no
• 3ecute o Net0eans.
• #egistre o servi&or
MySQL. Isto s? *o&erá ocorrer 8uan&o o MySQL estiver insta(a&o. 0asta c(icar com o 'oto &ireto &o mouse em 0anco &e &a&os conforme a imagem=
• Congure as *ro*rie&a&es &o
servi&or MySQL, aceitan&o a(gumas como *a&ro
ofereci&os na
guia $#o5#iedades B9sicas+
• Co(o8ue a sen4a &o #oot
&eni&a na insta(a+o &o MySQL. No (a'orat?rio &a Unica#ioca &eve ser
o*ciona(, vamos testarE
$asso 8: C#ia23o de ! Banco de Dados e Ta*ela Al!no
• Conecte ao servi&or
MySQL com o 'oto &ireito &o mouse e, (ogo a*?s, no mesmo menu, crie um 'anco &e &a&os c4ama&o %scola.
$asso 8: C#ia23o de ! Banco de Dados e Ta*ela Al!no
• Para criar o 'anco &e &a&os, voc) &everá &enir o
noe e concede# acesso. Voc) *o&e fa2)(o conforme
*ro*osto na imagem 8ue segue=
$asso 8: C#ia23o de ! Banco de Dados e Ta*ela Al!no
• Conecte com o 'anco &e &a&os c(ican&o com o 'oto
&ireito &o mouse so're %scola. Isto *ermitirá a cria+o &a cone3o *ara e(e e *osterior uso em a*(ica+<es no Net0eans.
$asso 8: C#ia23o de ! Banco de Dados e Ta*ela Al!no
• 1 cria+o &a cone3o *ara o 0D 0anco &e
Da&os %scola *o&e ser vista a'ai3o circun&a&a em a2u(. Conecte a e(e *ara 8ue se *ossa criar ta'e(as.
$asso 8: C#ia23o de ! Banco de Dados e Ta*ela Al!no
• 1 *artir &aA, 6 *ossAve( criar ta'e(as *ara o 'anco &e
&a&os, e no caso, criaremos a ta'e(a Al!no *ara efeito &e a*ren&i2a&o.
• Com o 'oto &ireito &o mouse so're
• %scola ; Ta*elas, acesse %<ec!ta# CoandoF *ara 8ue
a*are+a um e&itor Coman&o SQL em 'ranco.
• Digite no e&itor Voc= 5ode !sa# Ct#lC Ct#lV,
o scri*t &e cria+o &a ta'e(a 1(uno, mostra&o a'ai3o, e ro&eo=
$asso 8: C#ia23o de ! Banco de Dados e Ta*ela Al!no
create ta'(e a(uno
i& 0I7IN> not nu(( *rimary Gey, Nome V1#CH1#; not nu((,
CP" V1#CH1#: not nu(( uni8ue
• #esu(ta&o na(
$asso 8: C#ia23o de ! Banco de Dados e Ta*ela Al!no
$asso >: C#ia23o da A5lica23o JAVA no NetBeans • C(i8ue no menu A#?!ivo "i(e Novo $#o@eto NeB Pro$ectF se(eci on Java A5lica23o Java Java 1**(ication e c(i8ue em Pr?3imo Ne
• m Nome &o Pro$eto Pro$ect Name co(o8ue o nome, ou
outro 8ue
&ese$e, JavaA55licationMySQLCoStateent e c(i8ue em "inalia# "inis4. #esu(ta&o a'ai3o=
• Crie o *acote a5#esentacao como a*onta&o na
imagem a'ai3o=
• Crie um J"#ae c4ama&o J"#aeAl!no seguin&o a
imagem a'ai3o=
• Crie os com*onentes, no J"#ae, como a*resenta&o na
imagem a seguir. ste$a atento aos &eta(4es &e 8uais so estes com*onentes na Pa(eta $allete.
• 7ere os eventos &e ca&a 'oto com d!5lo cli?!e
&o're e(es ou c(ican&o com o 'oto &ireito &o mouse e acessan&o %ventos %vents ; A23o Action ; action$e#(o#ed. Ve$a os eventos na guia &e cEdigo
(onte So!#cea'ai3o=
• 1&icione o D#ive# JDBC MySQL MySQL JDBC
D#ive# em 0i'(iotecas Li*#a#ies. 1'ai3o=
•
Digite os c?&igos &os *r?3imos s(i&e *ara o
evento &e ca&a 'oto no J(#ae=
•
1>NK5= #enomeie os com*onentes 0oto
&ireto
&o
mouse
so're
o
com*onente
no J"#ae e Alte#a# Noe da Va#i9vel
C)ange Va#ia*le Nae &o *aine( Inserir
1(uno conforme in&ica&o no c?&igo a'ai3o=
•
3em*(o=
• %vento do Bot3o 1nse#i#
$asso >: C#ia23o da A5lica23o JAVA no NetBeans
try
FFRegist#a JDBC d#ive#
C(ass.forNamecom.mys8(.$&'c.DriverO
FFA*#indo a cone<3o: AT%N-./ /S D/1S $ARGM%TR/S VAH1/SI I S./ USUR1/ % S%N&A, R%S$%CT1VAM%NT%+
Connection conn DriverManager.getConnection$&'c=mys8(=//(oca(4ost=;R/esco(a, , O FF%<ec!ta a ?!e#y de inse#23o
$ava.s8(.Statement st conn.createStatementO
st.e3ecute!*&ateINS#> IN>5 a(uno i&, nome, c*f V1L!S t4is.$>e3t"ie(&I&.get>e3t ,T
t4is.$>e3t"ie(&Nome.get>e3t T,T t4is.$>e3t"ie(&CP".get>e3t TO
J5*tionPane.s4oBMessageDia(ogrootPane, 1(uno inseri&oO U catc4 SQL3ce*tion C(assNot"oun&3ce*tion e
Deveos i5o#ta# as seg!intes classes:
im*ort $ava.s8(.ConnectionO im*ort $ava.s8(.DriverManagerO im*ort $ava.s8(.SQL3ce*tionO
• %vento do Bot3o At!alia#= ste$a aten&o W
necessi&a&e &e mu&an+a &as variáveis como no caso acima.
$asso >: C#ia23o da A5lica23o JAVA no NetBeans
try
FFRegist#a JDBC d#ive#
C(ass.forNamecom.mys8(.$&'c.DriverO
FFA*#indo a cone<3o: AT%N-./ /S D/1S $ARGM%TR/S VAH1/SI I S./ USUR1/ % S%N&A, R%S$%CT1VAM%NT%+
Connection conn DriverManager.getConnection$&'c=mys8(=//(oca(4ost=;R/esco(a, , O FF%<ec!ta a ?!e#y de at!alia23o
$ava.s8(.Statement st conn.createStatementO st.e3ecute!*&ate!PD1> a(uno S> nomeT
t4is.$>e3t"ie(&NovoNome.get>e3t T,c*fT t4is.$>e3t"ie(&NovoCP".get>e3t
T XH# i&T t4is.$>e3t"ie(&I&3istente.get>e3t TO J5*tionPane.s4oBMessageDia(ogrootPane, 1(uno atua(i2a&oO
As classes a*ai<o @9 (o#a i5o#tadasK
im*ort $ava.s8(.ConnectionO im*ort $ava.s8(.DriverManagerO im*ort $ava.s8(.SQL3ce*tionO
• %vento do Bot3o %<cl!i#: ste$a aten&o W
necessi&a&e &e mu&an+a &as variáveis como no caso acima.
$asso >: C#ia23o da A5lica23o JAVA no NetBeans
try
FFRegist#a JDBC d#ive#
C(ass.forNamecom.mys8(.$&'c.DriverO
FFA*#indo a cone<3o: AT%N-./ /S D/1S $ARGM%TR/S VAH1/SI I S./ USUR1/ % S%N&A, R%S$%CT1VAM%NT%+
Connection conn DriverManager.getConnection$&'c=mys8(=//(oca(4ost=;R/esco(a, , O FF%<ec!ta a ?!e#y de e<cl!s3o
$ava.s8(.Statement st conn.createStatementO
st.e3ecute!*&ateDL> "#5M 1(uno XH# i&T t4is.$>e3t"ie(&I&3c(usao.get>e3t TO J5*tionPane.s4oBMessageDia(ogrootPane, 1(uno e3c(uA&oO
U catc4 SQL3ce*tion C(assNot"oun&3ce*tion e J5*tionPane.s4oBMessageDia(ogrootPane, eO UFF"i t#y
As classes a*ai<o @9 (o#a i5o#tadasK
im*ort $ava.s8(.ConnectionO im*ort $ava.s8(.DriverManagerO im*ort $ava.s8(.SQL3ce*tionO
• Na main &a c(asse
*rinci*a( JavaA55licationMySQLCoStateent &igite o c?&igo &e a'ertura &a $ane(a a'ai3o e a&icione a
im*orta+o ao *acote a5#esenta23o e ro&e o *rograma *ara ver o resu(ta&o.
$asso >: C#ia23o da A5lica23o JAVA no NetBeans
JFrameAluno jFrameAluno = new JFrameAluno(); //Cria o objeto Janela
jFrameAluno.setTitle("Cadastro de Alunos" ); //Define o título na Janela
jFrameAluno.setLoation!elatieTo(null); //Coloa a janela no entro da tel
• Crie, agora, um novo 'oto c4ama&o Lista# no "rame e
&igite o c?&igo a'ai3o em seu evento.
$asso >: C#ia23o da A5lica23o JAVA no NetBeans
Deveos i5o#ta# a seg!inte classe:
im*ort $ava.s8(.#esu(tSetO
try
FFRegist#a JDBC d#ive#
C(ass.forNamecom.mys8(.$&'c.DriverO
FFA*#indo a cone<3o: AT%N-./ /S D/1S $ARGM%TR/S VAH1/SI I S./ USUR1/ % S%N&A, R%S$%CT1VAM%NT%+
Connection conn DriverManager.getConnection$&'c=mys8(=//(oca(4ost=;R/esco(a, , O FF%<ec!ta a ?!e#y de sele23o
$ava.s8(.Statement st conn.createStatementO st.e3ecuteQueryse(ect Y from a(unoO
#esu(tSet rs st.get#esu(tSetO FFLista os al!nos no console B4i(e rs.ne3t
System.out.*rintrs.getStringI& , O System.out.*rintrs.getStringNome , O System.out.*rint(nrs.getStringCP"O
U
• Ve$a o resu(ta&o &o *rograma com o novo
'oto Listagem mostran&o o resu(ta&o no conso(e.
• 1&icione, agora,
um com*onente
JTa*le no "rame e &igite o c?&igo a seguir no 'oto
Lista# Todos.
• Digite o c?&igo a'ai3o no 'oto Lista# Todos.
$asso >: C#ia23o da A5lica23o JAVA no NetBeans
try
FFRegist#a JDBC d#ive#
C(ass.forNamecom.mys8(.$&'c.DriverO
FFA*#indo a cone<3o: AT%N-./ /S D/1S $ARGM%TR/S VAH1/SI I S./ USUR1/ % S%N&A, R%S$%CT1VAM%NT% .
Connection conn DriverManager.getConnection$&'c=mys8(=//(oca(4ost=;R/esco(a, , O FF%<ec!ta a ?!e#y de sele23o
$ava.s8(.Statement st conn.createStatementO st.e3ecuteQueryse(ect Y from a(unoO
#esu(tSet rs st.get#esu(tSetO
FFDeni# taan)o a!to9tico das col!nas no odelo $>a'(e:.set1uto#esi2eMo&e$>a'(e.1!>5Z#SI[Z1LLZC5L!MNSO
FFC#iando ! odelo de aco#do co a deni23o da IJTa*le0I Defau(t>a'(eMo&e( mo&e(o Defau(t>a'(eMo&e( $>a'(e:.getMo&e(O
FFHe#a# as lin)as e<istentes do odelo mo&e(o.setNum#oBs;O
FFLista os al!nos no JTa*le B4i(e rs.ne3t mo&e(o.a&&#oBneB 5'$ect\] rs.getStringI&, rs.getStringNome, rs.getStringCP" UO U
• 1&icione, agora, o c?&igo a'ai3o no 'oto Cons!lta#.
$asso >: C#ia23o da A5lica23o JAVA no NetBeans
try
FFRegist#a JDBC d#ive#
C(ass.forNamecom.mys8(.$&'c.DriverO
FFA*#indo a cone<3o: AT%N-./ /S D/1S $ARGM%TR/S VAH1/SI I S./ USUR1/ % S%N&A, R%S$%CT1VAM%NT%+
Connection conn DriverManager.getConnection$&'c=mys8(=//(oca(4ost=;R/esco(a, , O FF%<ec!ta a ?!e#y de sele23o !tiliando 5a#et#o enviado 5elo !s!9#io
String 8uery se(ect Y from a(uno B4ere nome (iGe EO Pre*are&Statement cm&O
cm& conn.*re*areStatement8ueryO
cm&.setString:, ^ $>e3t"ie(&Consu(taNome.get>e3t ^O #esu(tSet rs cm&.e3ecuteQueryO
FFDeni# taan)o a!to9tico das col!nas no odelo $>a'(e:.set1uto#esi2eMo&e$>a'(e.1!>5Z#SI[Z1LLZC5L!MNSO
FFC#iando ! odelo de aco#do co a deni23o da I JTa*le0I Defau(t>a'(eMo&e( mo&e(o Defau(t>a'(eMo&e( $>a'(e:.getMo&e(O FFHe#a# as lin)as e<istentes do odelo
mo&e(o.setNum#oBs;O FFLista os al!nos no JTa*le B4i(e rs.ne3t mo&e(o.a&&#oBneB 5'$ect\] rs.getStringI&, rs.getStringNome, rs.getStringCP" UO U
• 1&icione, agora, o c?&igo a'ai3o no evento Mo!seClic'ed &o com*onente JTa*le.
FF/*te# o ne#o da lin)a seleciona
int (in4ase(eciona&a $>a'(e:.getSe(ecte&#oBO
FF%<i*i# os valo#es das col!nas da ta*ela nas cai<as de te<to
$>e3t"ie(&I&3istente.set>e3t$>a'(e:.getVa(ue1t(in4ase(eciona&a, ;.toStringO $>e3t"ie(&NovoNome.set>e3t$>a'(e:.getVa(ue1t(in4ase(eciona&a, :.toStringO $>e3t"ie(&NovoCP".set>e3t$>a'(e:.getVa(ue1t(in4ase(eciona&a, _.toStringO