Ejemplo Conectando Java Con MySql

Preview:

DESCRIPTION

Ejemplo Conectando Java Con MySql

Citation preview

14/7/2015 CoDejaVu:EjemploConectandoJavaconMySqlhttp://codejavu.blogspot.com.ar/2013/06/ejemploconectandojavaconmysql.html 1/16Inicio AcercaDe... QueesCoDejaVu? IndicedeContenido VideoTutorialesCoDejaVulunes,3dejuniode2013Ejemplo Conectando Java con MySqlEn esta entrada vamos a tocar uno de los puntosfundamentales en el desarrollo de software, novamosaentrarendetallesdequeesunaBD,nilostipos existentes ni como crearlas entre muchosotros temas en torno a esto, solamente muestrouna pequea aplicacin (muy bsica) dondeveremosdeformafcilcomoconectarnosaunaBDparaconsultaryregistrarinformacin....ademsdaremospasoafuturasentradassobrelosPatronesdeDiseo,yaqueenestaaplicaremoslosPatronesVO(ValueObject)yDAO(DataAccessObjetc).Requisitos.Ambientededesarrollo(EnestecasoEclipse)JDKinstalado.MySqlInstaladomysqlconnectorjava5.0.8bin(lopuedenbajardesdeaqu)ConocimientosBasicosdeProgramacin.GanasdeContinuar.EnMarcha.Bueno,vamosahacerunaaplicacinsimple,laideadeestetutorialesvercomoconectarnosaMySqldesde Java, por eso no nos preocuparemos tanto en comosepresentarannuestrainformacin,nilostiposdedatos,niquetanptimoseanuestro cdigo, simplemente vamos a crear una base desde donde podamostrabajar.LaAplicacin.El siguiente diagrama muestra la estructura de nuestra aplicacin (Ojo no es undiagramadeclasescompleto,esmasusadoparadarclaridadalsistema,poresononosenfocaremosenasociaciones,tiposdedatosoetc)BuscarBuscaresteblogCristianHenaoSeguir 849IngenierodeSistemasyComputacin(UniversidaddelQuindo)TecnlogoenAnlisisyDesarrollodelosSistemasdeInformacin(SenaQuindo).Blog:http://codejavu.blogspot.com/Facebook:https://www.facebook.com/codejavuyoutube:http://goo.gl/IiPNSyTwitter:@chenaoooLinkedin:http://www.linkedin.com/pub/cristiandavidhenaohoyos/69/b90/84aVertodomiperfilContactoSuscribete!!!Quieresseguiresteblog?Participaenelsitio14/7/2015 CoDejaVu:EjemploConectandoJavaconMySqlhttp://codejavu.blogspot.com.ar/2013/06/ejemploconectandojavaconmysql.html 2/16Comovemoslaaplicacinesbsica,nosconectaremosaunaBDdondetenemosunanicatablaymedianteJavavamosaaccederadichaBDparapoderregistrary consultar informacin, la idea es poder registrar y consultar personas, en laaplicacintendremosunMenprincipalconestasopciones.....LaBasedeDatos.Nuestra base de datos solo tendr la tabla persona con los datos bsicos deregistro(sisedeseasepuededarotroenfoquealatablaotrabajarconmuchasmas),elScriptparalacreacineselsiguiente:Empecemos!!!Para iniciar vamos a crear un proyecto java en Eclipse, por cuestiones deorganizacin crearemos las clases de nuestro diagrama separndolas porpaquetes, esto con el fin de tener nuestro proyecto mas estructurado y fcil deentender,as.Como vemos tenemos un paquete por cada clase, en estos momentos la123456789101112131415161718CREATEDATABASE/*!32312IFNOTEXISTS*/`codejavu`/*!40100DEFAULTCHARACTERUSE`codejavu`;/*Tablestructurefortable`persona`*/DROPTABLEIFEXISTS`persona`;CREATETABLE`persona`(`id`int(10)NOTNULL,`nombre`varchar(30)defaultNULL,`edad`int(3)defaultNULL,`profesion`varchar(30)defaultNULL,`telefono`decimal(10,0)defaultNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=latin1;/*Dataforthetable`persona`*/ParticiparenestesitioGoogleFriendConnectMiembros(102) MsYaeresmiembro?Iniciarsesin95CristianHenao849metienenensuscrculos. VertodoAadiracrculosContactosG+2015(3)2014(17)2013(59)diciembre(2)noviembre(2)octubre(4)septiembre(4)agosto(4)julio(3)junio(8)EjemploPatronDelegateEjemploPatrnObserverEjemploModeloVistaControladorQuesonlosPatronesdeDiseo?PremioLiebsterAwardEjemploConectandoJavaconMySqlManejodeExcepcionesenJavaEjemplodePolimorfismoEnJavamayo(18)abril(14)HistorialCoDejaVu14/7/2015 CoDejaVu:EjemploConectandoJavaconMySqlhttp://codejavu.blogspot.com.ar/2013/06/ejemploconectandojavaconmysql.html 3/16aplicacin es pequea por lo tanto no nos da problemas de organizacin, sinembargoamedidaquevayacreciendosehaceimportantetenernuestrasclasesagrupadasfacilitandoaseltrabajofuturoylamantenibilidaddenuestrosistema.ClaseDbConnection.Esta clase ser nuestra cadena de conexion, aqu definiremos los parmetrosrequeridosparaconectarnosalaBDcreadaanteriormente.En la clase estamos aplicando el manejo de excepciones, tema tratado en elarticulo anterior, vemos como se tiene contemplada la jerarqua de excepcionespertinente.ClasePersonaVO.Estaclasenospermitedarunmanejomuchomasorganizadoyseguroanuestrainformacin, en ella estamos aplicando el patrn VO (Value Object) con el cualnosaseguramosquelosdatosviajenenunsoloobjeto,evitandonosoloelenvidegrancantidaddeparmetrossinotambinunmayorcontrol............Debemossaber que por cada tabla de nuestra BD se tiene que construir su equivalenteclaseVO.12345678910111213141516171819202122232425262728293031323334353637383940414243444546packageprueba.connection;importjava.sql.*;/***Clasequepermiteconectarconlabasededatos*@authorchenao**/publicclassDbConnection{/**Parametrosdeconexion*/staticStringbd="codejavu";staticStringlogin="root";staticStringpassword="";staticStringurl="jdbc:mysql://localhost/"+bd;Connectionconnection=null;/**ConstructordeDbConnection*/publicDbConnection(){try{//obtenemoseldriverdeparamysqlClass.forName("com.mysql.jdbc.Driver");//obtenemoslaconexinconnection=DriverManager.getConnection(url,login,password);if(connection!=null){System.out.println("Conexinabasededatos"+bd+"OK\n");}}catch(SQLExceptione){System.out.println(e);}catch(ClassNotFoundExceptione){System.out.println(e);}catch(Exceptione){System.out.println(e);}}/**Permiteretornarlaconexin*/publicConnectiongetConnection(){returnconnection;}publicvoiddesconectar(){connection=null;}}1 packageprueba.vo;continuousintegration (6)Eclipse (14)Herencia (4) Integracincontinua (6) java(17) Java Swing (23)jboss (4)JDK(4)Jenkins(7)Patrones de Diseo (8)ProgramacinOrientadaaObjetos(7)svn(5)CategoriasAbstract(2)AbstractFactory(2) Adapter(2) Apache Ant (3)control de versiones (3)Excepciones (1) googlecode (2)Interface (3)jboss seam (3) Jboss Tools(2)JDialog(3) JSF(3) MVC (3) MySql (1) Observer (2)PerGemspace (1) Plugin (3) Polimorfismo (3)Properties (1) repositorio (3) seam gen (1)Singleton(2)EjemplodePolimorfismoEnJavaEnestaentradavamosatrabajarunejemplorpidoysimpleaplicandoelconceptodePolimorfismo,enelpostanteriorvimosalgunasconsi...EjemploModeloVistaControladorEnlaentradasobrepatronesdeDiseosehablasobreelpatrnMVC,enestaoportunidadvamosexplicarunejemplopracticodondeseapl...EclipseoNetbeans?Hola,enestaoportunidadquierohacerunbreakenlasentradassobreJavaSwing..........................YPorqu?...........porquea...ComparandoFechasEnJavaEnestaentradaveremosunodelosprocesosobligadoscuandosetrabajaenestecampodeldesarrollodeSoftware,sinimportarellenguajeq...EjemploConectandoJavaconMySqlEnestaentradavamosatocarunodelospuntosfundamentaleseneldesarrollodesoftware,novamosaentrarendetallesdequeesunaB...EjemploJFileChooserNuevamenteregresoconunejemploprcticosobreunodeloscomponentesJavaSwing..............eldadehoylestraigoelJFileChooser...ConceptosBsicosdeProgramacinOrientadaaObjetosEnestaentradaveremosalgunosLoMasVisto14/7/2015 CoDejaVu:EjemploConectandoJavaconMySqlhttp://codejavu.blogspot.com.ar/2013/06/ejemploconectandojavaconmysql.html 4/16ComovemoscadacampodelatablapersonaesreflejadoenlaClasePersonaVO,234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677/***CLaseVOconlosatributosdelcampoempleado*@authorchenao**/publicclassPersonaVO{privateIntegeridPersona;privateStringnombrePersona;privateIntegeredadPersona;privateStringprofesionPersona;privateIntegertelefonoPersona;/***@returntheidPersona*/publicIntegergetIdPersona(){returnidPersona;}/***@paramidPersonatheidPersonatoset*/publicvoidsetIdPersona(IntegeridPersona){this.idPersona=idPersona;}/***@returnthenombrePersona*/publicStringgetNombrePersona(){returnnombrePersona;}/***@paramnombrePersonathenombrePersonatoset*/publicvoidsetNombrePersona(StringnombrePersona){this.nombrePersona=nombrePersona;}/***@returntheedadPersona*/publicIntegergetEdadPersona(){returnedadPersona;}/***@paramedadPersonatheedadPersonatoset*/publicvoidsetEdadPersona(IntegeredadPersona){this.edadPersona=edadPersona;}/***@returntheprofesionPersona*/publicStringgetProfesionPersona(){returnprofesionPersona;}/***@paramprofesionPersonatheprofesionPersonatoset*/publicvoidsetProfesionPersona(StringprofesionPersona){this.profesionPersona=profesionPersona;}/***@returnthetelefonoPersona*/publicIntegergetTelefonoPersona(){returntelefonoPersona;}/***@paramtelefonoPersonathetelefonoPersonatoset*/publicvoidsetTelefonoPersona(IntegertelefonoPersona){this.telefonoPersona=telefonoPersona;}}conceptosdelaprogramacinorientadaaObjetos(POO)...............................................Muc...LeerArchivoPropertiesenJavaEnelsegundoPostdeesteblogsemencionlaintencindepublicarentradassobrediversostemas,algunoscomplejosotrosnotanto..........ComocrearInterfacesGraficasenEclipseconWindowBuilderDespusdemuchomeditarlo,voyaexplicarlescmocrearaplicacionesconinterfazgrficadesdeEclipse,similaracomosehaceen...EjemploVentanasenJavaEnlaentradaanteriorconocimosanivelgeneralalgunascaractersticasdeloscomponentesJFrameyJDialog,vimosagrosomodoloprinc...CoDejaVu no es mas que la idea deaportar un poco de conocimiento ycolaboracin a los que lo puedannecesitar,yretribuirunpocodeloquehe podido aprender...........no esperoque muchos sigan mis Entradas, odejen comentarios, solo espero queesto pueda ser de utilidad paraalguien.........ysilesirveaalguienmasporquenocompartirlo?CoDejaVu!!!EnlacesPaperblogHace3meses14/7/2015 CoDejaVu:EjemploConectandoJavaconMySqlhttp://codejavu.blogspot.com.ar/2013/06/ejemploconectandojavaconmysql.html 5/16tambienaplicamosunpocoelconceptodeEncapsulacintratadoenunarticuloanteriormediantelacreacindemetodossetterygetterporcadadatoprivado.ClasePersonaDAO.Estaclaseseralaencargadadegestionarelaccesoalosdatos,conellaaplicamosun patrn DAO (Data Access Objetc) no entraremos en detalle (mas adelante sepresentaraunaentradasobreestePatrn)yaquebsicamentenecesitamossaberque este patrn nos ensea la forma de obtener informacin de la BD mediantemtodosCRUD(Create,Read,UpdateyDelete),asqueporcadatabladenuestraBDdebemostenerunaclaseDAOquelarepresente!!!1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465packageprueba.dao;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjavax.swing.JOptionPane;importprueba.connection.DbConnection;importprueba.vo.PersonaVO;/***Clasequepermiteelaccesoalabasededatos*@authorchenao**/publicclassPersonaDAO{/***Permiteregistrarunempleado*@parampersona*/publicvoidregistrarPersona(PersonaVOpersona){DbConnectionconex=newDbConnection();try{Statementestatuto=conex.getConnection().createStatement();estatuto.executeUpdate("INSERTINTOpersonaVALUES('"+persona.getIdPersona()++persona.getNombrePersona()+"','"+persona.getEdadPersona()+"','"+persona.getProfesionPersona()+"','"+persona.getTelefonoPersona()+JOptionPane.showMessageDialog(null,"SeharegistradoExitosamente"estatuto.close();conex.desconectar();}catch(SQLExceptione){System.out.println(e.getMessage());JOptionPane.showMessageDialog(null,"NoseRegistrolapersona");}}/***permiteconsultarelempleadoasociadoaldocumentoenviado*comoparametro*@paramdocumento*@return*/publicArrayListconsultarPersona(intdocumento){ArrayListmiEmpleado=newArrayList();DbConnectionconex=newDbConnection();try{PreparedStatementconsulta=conex.getConnection().prepareStatement(consulta.setInt(1,documento);ResultSetres=consulta.executeQuery();if(res.next()){PersonaVOpersona=newPersonaVO();persona.setIdPersona(Integer.parseInt(res.getString("id")));persona.setNombrePersona(res.getString("nombre"));persona.setEdadPersona(Integer.parseInt(res.getString("edad")));persona.setProfesionPersona(res.getString("profesion"));persona.setTelefonoPersona(Integer.parseInt(res.getString("telefono"miEmpleado.add(persona);14/7/2015 CoDejaVu:EjemploConectandoJavaconMySqlhttp://codejavu.blogspot.com.ar/2013/06/ejemploconectandojavaconmysql.html 6/16PorcuestionesdetiemponorealizaremostodoelCRUD,tansolovamosatrabajarcon los mtodos de registro y consulta (Los mtodos de actualizacin yeliminacinsernunabuenatareaencasa))Cadamtodousalacadenadeconexincreadaanteriormenteyseenfocaenunatarea en especifico, adems en cada uno hacemos uso de un objeto de tipoPersonaVO, mediante el cual asignamos la informacin de nuestra tablapersona,tantoparaelregistrocomoparalaconsultadeinformacin.ClasePrincipal.Enestaclasevamosahacerelllamadoatodoslosprocesosdenuestraaplicacin,tendremos un men en el cual presentamos todas las opciones del sistema, asmismosevalidaranlasentradasdelusuarioparaevitarposiblesinconsistenciasyposteriormente se hace el llamado a la clase DAO que permite ejecutar losprocesosdeconexinconlaBD.66676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107}res.close();consulta.close();conex.desconectar();}catch(Exceptione){JOptionPane.showMessageDialog(null,"nosepudoconsultarlaPersona\n"}returnmiEmpleado;}/***permiteconsultarlalistadeempleados*@return*/publicArrayListlistaDePersonas(){ArrayListmiEmpleado=newArrayList();DbConnectionconex=newDbConnection();try{PreparedStatementconsulta=conex.getConnection().prepareStatement(ResultSetres=consulta.executeQuery();while(res.next()){PersonaVOpersona=newPersonaVO();persona.setIdPersona(Integer.parseInt(res.getString("id")));persona.setNombrePersona(res.getString("nombre"));persona.setEdadPersona(Integer.parseInt(res.getString("edad")));persona.setProfesionPersona(res.getString("profesion"));persona.setTelefonoPersona(Integer.parseInt(res.getString("telefono"miEmpleado.add(persona);}res.close();consulta.close();conex.desconectar();}catch(Exceptione){JOptionPane.showMessageDialog(null,"nosepudoconsultarlaPersona\n"}returnmiEmpleado;}}123456789101112131415packageprueba.principal;importjava.util.ArrayList;importjavax.swing.JOptionPane;importprueba.dao.PersonaDAO;importprueba.vo.PersonaVO;publicclassPrincipal{PersonaDAOmiPersonaDAO;/***Mtodoprincipal,haceelllamadoalmendondese*presentantodaslasopcionesdelsistema14/7/2015 CoDejaVu:EjemploConectandoJavaconMySqlhttp://codejavu.blogspot.com.ar/2013/06/ejemploconectandojavaconmysql.html 7/16161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596*@paramargs*/publicstaticvoidmain(String[]args){PrincipalmiPrincipal=newPrincipal();miPrincipal.verMenu();}/***Mtodoquepermitepresentarlasopcionesdelsistema.*solicitaelingresodeunnumeroyseenviaasu*correspondienteproceso*/privatevoidverMenu(){StringtextoMenu="MenPrincipal\n\n";textoMenu+="IngresealgunadelasopcionesdelMen\n";textoMenu+="1.RegistrarPersona\n";textoMenu+="2.ConsultarPersona\n";textoMenu+="3.VerListaPersonas\n";textoMenu+="4.Salir.\n\n";try{intseleccion=Integer.parseInt(JOptionPane.showInputDialog(textoMenu));defineSeleccion(seleccion);}catch(NumberFormatExceptione){JOptionPane.showMessageDialog(null,"ErrorenelingresodeDatos,""solosepermitenvaloresnmericos","ERROR",JOptionPane.ERROR_MESSAGE);verMenu();}catch(Exceptione){JOptionPane.showMessageDialog(null,"ErrorenelingresodeDatos,""solosepermitenvaloresnmericos","ERROR",JOptionPane.ERROR_MESSAGE);verMenu();}}/***Permitedeterminarqueaccionejecutardependiendodelparametrode*ingresocorrespondientealasopcionesdelsistema*@paramseleccion*/privatevoiddefineSeleccion(intseleccion){System.out.println("Selecciona"+seleccion);switch(seleccion){case1:registrarPersona();verMenu();break;case2:intdoc=Integer.parseInt(JOptionPane.showInputDialog("Ingreseelnumero""dedocumentodelapersona"));buscarPersona(doc);verMenu();break;case3:obtenerRegistros();verMenu();break;case4:System.exit(0);break;default:JOptionPane.showMessageDialog(null,"Ingreseun"+"numerovalido","ADVERTENCIA",JOptionPane.WARNING_MESSAGE);verMenu();break;}}/***Permitesolicitarlosdatosdelapersonaaregistrar,sesolicitanmediante*unaventanadeingresoysealmacenanenunarreglocontodalainformacionusando*paraestounciclofor,posteriormenteestosdatossonalmacenadosenel*atributocorrespondientedelobjetopersonaparaserenviadoalmetododeregistro*enlaclaseDAO*/privatevoidregistrarPersona(){miPersonaDAO=newPersonaDAO();PersonaVOmiPersona=newPersonaVO();14/7/2015 CoDejaVu:EjemploConectandoJavaconMySqlhttp://codejavu.blogspot.com.ar/2013/06/ejemploconectandojavaconmysql.html 8/16979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177StringmensajeIngreso="Ingrese\n\n";StringdatosSolicitados[]={"Documento:","Nombre:","Edad:","Profesin:","Telefono:"};StringdatosPersona[]=newString[5];for(inti=0;i0){intnumeroPersona=0;//serecorrelalistadepersonasasignandosecadaposicionenunobjetopersonafor(inti=0;i0){//serecorrelalistayseasignanlosdatosalobjetoparaimprimirlosvaloresfor(inti=0;i