Ejemplo Conectando Java Con MySql

16
Inicio Acerca De... ¿Que es CoDejaVu? Indice de Contenido VideoTutoriales CoDejaVu lunes, 3 de junio de 2013 Ejemplo Conectando Java con MySql En esta entrada vamos a tocar uno de los puntos fundamentales en el desarrollo de software, no vamos a entrar en detalles de que es una BD, ni los tipos existentes ni como crearlas entre muchos otros temas en torno a esto, solamente muestro una pequeña aplicación (muy básica) donde veremos de forma fácil como conectarnos a una BD para consultar y registrar información ....además daremos paso a futuras entradas sobre los Patrones de Diseño, ya que en esta aplicaremos los Patrones VO (Value Object) y DAO (Data Access Objetc). Requisitos. Ambiente de desarrollo (En este caso Eclipse) JDK instalado. MySql Instalado mysqlconnectorjava5.0.8bin (lo pueden bajar desde aquí) Conocimientos Basicos de Programación. Ganas de Continuar. En Marcha. Bueno, vamos a hacer una aplicación simple, la idea de este tutorial es ver como conectarnos a MySql desde Java, por eso no nos preocuparemos tanto en como se presentaran nuestra información, ni los tipos de datos, ni que tan óptimo sea nuestro código, simplemente vamos a crear una base desde donde podamos trabajar. La Aplicación. El siguiente diagrama muestra la estructura de nuestra aplicación (Ojo no es un diagrama de clases completo, es mas usado para dar claridad al sistema, por eso no nos enfocaremos en asociaciones, tipos de datos o etc) Buscar Buscar este blog Cristian Henao Seguir 849 Ingeniero de Sistemas y Computación (Universidad del Quindío) Tecnólogo en Análisis y Desarrollo de los Sistemas de Información (Sena Quindío). Blog : http://codejavu.blogspot.com/ Facebook: https://www.facebook.com/ codejavu youtube: http://goo.gl/IiPNSy Twitter : @chenaooo Linkedin : http://www.linkedin.com/pub/cristian davidhenaohoyos/69/b90/84a Ver todo mi perfil Contacto Suscribete!!! Quieres seguir este blog? Participa en el sitio

description

Ejemplo Conectando Java Con MySql

Transcript of Ejemplo Conectando Java Con MySql

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