Si necesitas un código de programación en específico, escríbeme al formulario de contacto.

BUSCA TU CÓDIGO


BUSCA MÁS CÓDIGOS DE PROGRAMACIÓN AQUÍ:

▷ Código JAVA: Conectar nuestra aplicación con una Base de datos


Este artículo está orientado a la aplicación e implementación de una clase en Java, que nos permitirá conectar nuestra aplicación con una Base de datos, e igualmente se llevará a cabo un test de conexión a través de un pequeño fragmento de código el cual se colocará dentro del método de un botón: 

Clase para conectar con nuestra Base de datos (ConexionMySQL.Java):


package Metodos;

 
import java.sql.*;
import javax.swing.JOptionPane;


public class ConexionMySQL {

    public String db = "bdcontactos";
    public String url = "jdbc:mysql://localhost/"+db;
    public String user = "root";
    public String pass = "123";


   public Connection Conectar(){

       Connection link = null;

       try{

           Class.forName("org.gjt.mm.mysql.Driver");

           link = DriverManager.getConnection(this.url, this.user, this.pass);

       }catch(Exception ex){

           JOptionPane.showMessageDialog(null, ex);

       }


       return link;

   }

}
   



Código para el Test de Conexión:

private void btnProbarconexionActionPerformed(java.awt.event.ActionEvent evt) {                                                  


        ConexionMySQL mysql = new ConexionMySQL();

        java.sql.Connection cn= mysql.Conectar();


        if(cn!=null){

                JOptionPane.showMessageDialog(null, "Conectado");

                try{

                    cn.close();

                }catch(SQLException ex){

                    System.out.println("Error al desconectar "+ex);

                }

        }
        

    }                                                 
 
  



VIDEO TUTORIAL (PASO A PASO)


 

Instrucciones y Recomendaciones 

1- Primero que todo debemos descargar el archivo .jar conocido como MySQL Connector y añadirlo a las librerías de nuestro proyecto; luego crearemos en nuestro proyecto, un paquete al cual llamaremos "Metodos", y dentro de este, crearemos una clase la cual llamaremos "ConexionMySQL". 




2- Copia y pega el código resaltado en amarillo, después de la línea de código "package Metodos;" y sobre la línea de código "public class ConexionMySQL {", este fragmento de código se utiliza para importar las Clases y/o librerías necesarias para poder trabajar con ciertas funcionalidades y métodos de nuestra Clase:

import java.sql.*;
import javax.swing.JOptionPane;

3- Ahora copia y pega el código resaltado en azul, dentro de la Clase "public class ConexionMySQL {}"; es decir, debe quedar rodeado por las llaves "{}" que limitan dicha Clase.

4- La primera parte de este código resaltado en azul, consiste en crear 4 variables de tipo String y con la propiedad public. En la primera variable llamada "db", guardamos el nombre de la Base de datos a la cual nos queremos conectar; en la segunda variable url, guardaremos la ruta de donde se encuentra ubicada nuestra Base de datos, si nos damos cuenta deberemos emplear la api "jdbc:mysql" lo cual permite indicar que queremos conectar nuestra aplicación Java con una Base de datos en MySQL, además debemos consignar la dirección de la máquina que contiene la Base de datos, en este caso como trabajaremos en una sola máquina colocamos "localhost", en el caso dado que trabajemos de forma remota debemos reemplazar este valor por la dirección IP (ej. 192.168.1.2) de la máquina a la cual necesitamos conectarnos, en esta misma variable concatenamos la variable que instanciamos al principio "+db"; luego la tercera y cuarta variable "user" y "pass", corresponden al usuario y la clave para poder tener acceso a la Base de datos.    

public String db = "bdcontactos";
public String url = "jdbc:mysql://localhost/"+db;
public String user = "root";
public String pass = "123";

5- Lo siguiente es un método, este contiene la propiedad "public", y devolverá un valor de tipo "Connection", que en otras palabras sería la conexión con nuestra Base de datos; y se le ha asignado a este método el nombre de "Conectar":

public Connection Conectar(){}










6- Ahora instanciaremos un objeto de tipo "Connection", al cual asignaremos el valor "null". Esto irá dentro del método del punto anterior:

Connection link = null;  

7-  Proseguiremos a crear un bloque "try-catch", debido a que el código que hemos de emplear podría producir una excepción y/o error. Este bloque irá dentro del método mencionado en el punto 5:

try{   
 
    }catch(Exception ex){

 
    }


8- En esta línea de código lo que haremos será cargar la Clase "Driver", que se encuentra ubicada dentro del ".jar" MySQL Connector que agregamos a nuestras librerías. Esta línea irá dentro del "try{}" del punto anterior:

Class.forName("org.gjt.mm.mysql.Driver");

9- Ahora utilizando el método DriverManager.getConnection, y empleando las variables que instanciamos al inicio de esta Clase, obtendremos la conexión con nuestra Base de datos, y procederemos administrarla y almacenarla en el objeto tipo Connection instanciado al principio del método "Conectar". Esta línea de código irá dentro del "try{}" del punto 7.

link = DriverManager.getConnection(this.url, this.user, this.pass);


10- En el caso dado de que ocurra un error al tratar de conectarnos con nuestra Base de datos, procederemos a mostrar dicha excepción a través de una pequeña ventana, usando el componente JOptionPane. Esta parte irá dentro del "catch(){}" del punto 7:

JOptionPane.showMessageDialog(null, ex);

11- Por último retornaremos la conexión obtenida, la cual podría ser exitosa o nula. Esta línea irá por fuera del try-catch, pero dentro del método Conectar:

return link; 
 
12- En cuanto al código para el test de conexión, copia y pega el código resaltado en verde, dentro del evento y/o método del botón de un formulario de tu proyecto.

13- En las dos primeras líneas de código, lo que hacemos es instanciar un objeto de nuestra Clase ConexionMySQL.java y luego en un objeto tipo Connection, administramos y/o capturamos la conexión que se nos devuelve al llamar el método Conectar de nuestra Clase mencionada anteriormente:

ConexionMySQL mysql = new ConexionMySQL();

java.sql.Connection cn= mysql.Conectar();
 
14- En el resto de código, empleamos un condicional "if", en el cual verificamos que no se nos devuelva una conexión nula, si se cumple esta condición, mostraremos una ventana (JOptionPane) en la cual mostraremos el mensaje "Conectado"; luego dentro de un try-catch, procedemos a cerrar la conexión con la Base de datos, y en dado caso de que ocurra una excepción a la hora de realizar la desconexión, mostraremos dicho error por consola:

if(cn!=null){

                JOptionPane.showMessageDialog(null, "Conectado");

                try{

                    cn.close();

                }catch(SQLException ex){

                    System.out.println("Error al desconectar "+ex);

                }

        }
 

15- Ahora sólo basta con ejecutar tu proyecto y hacer las respectivas pruebas.
 
16- Si deseas saber cómo conectar una aplicación hecha en Java con una Base de datos, usando un entorno gráfico como Netbeans IDE, puedes visitar el siguiente enlace: 


¿Quieres hacer otras cosas en JAVA?, accede a todos los fragmentos de código que hemos publicado en este lenguaje hasta el momento, dando clic en el siguiente enlace:

Ver listado de códigos JAVA










Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: Facebook, Twitter, y Google+.
Si te fue de gran ayuda esta información, no olvides compartirla con tus amigos.
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...





Comparte este código


17 comentarios:

  1. PARA TENER EN CUENTA:
    La línea de código que explicamos en el punto 8:
    Class.forName("org.gjt.mm.mysql.Driver");
    Actualmente no es necesaria, así que la puedes obviar (eliminarla); sin embargo, si la dejas o la quitas el código seguirá funcionando.
    Si leemos un poco la documentación de la clase DriverManager, encontraremos lo siguiente:
    INGLÉS:
    Applications no longer need to explicitly load JDBC drivers using Class.forName(). Existing programs which currently load JDBC drivers using Class.forName() will continue to work without modification.

    When the method getConnection is called, the DriverManager will attempt to locate a suitable driver from amongst those loaded at initialization and those loaded explicitly using the same classloader as the current applet or application.

    ESPAÑOL:
    Las aplicaciones ya no necesitan cargar explícitamente controladores JDBC utilizando Class.forName (). Programas que actualmente cargan controladores JDBC utilizando Class.forName (existente) seguirá trabajando sin modificaciones.

    Cuando el método getConnection se llama, el DriverManager intentará localizar un controlador adecuado de entre las que se cargan en la inicialización y las que se cargan de forma explícita utilizando el mismo cargador de clases que el applet o aplicación actual.

    Para obtener la información completa puedes dirigirte a:
    http://docs.oracle.com/javase/8/docs/api/java/sql/DriverManager.html

    ResponderBorrar
  2. hola tengo una consulta si pueden ayudarme se los agradeceria ,,(primero realizo clean and build ,,, me crea un jar en dist) tengo un problema al ejecutar la aplicacion ,,, me dice error al conectar en el puerto local 1527 con el mensaje coneccion refused:connect ....... no me conecta a la base de datos y puse tu boton para testear y me tira el error coneccion refused ,,,,, lo raro que para que funcione la aplicacion debo conectarme manualmente desde netbens ,,,SERVICES ,, DATABASE ,,, mi base de datos clik derecho connect y me conecta entonces el programa funciona y el testeo tambien no me da errores ,,,,, ya no se cual es el problema ,,,,, ayuda plis que puede ser


    public class ingresodatos {

    Connection ingresodatos = null;
    public Connection conectar() {

    try{
    Class.forName("org.apache.derby.jdbc.ClientDriver");
    ingresodatos= DriverManager.getConnection("jdbc:derby://localhost:1527/MALLNODO;create=true;user=mallnodo;password=mallnodo");


    }catch(ClassNotFoundException | SQLException e){
    JOptionPane.showMessageDialog(null, e);
    }
    return ingresodatos;
    }

    }


    nombre base de datos MALLNODO
    usuario mallnodo
    password mallnodo

    ResponderBorrar
    Respuestas
    1. Saludos estimado Rod, trata de organizar tu clase de la siguiente forma:

      public class ingresodatos {

      private static Connection cn = null;
      private static Driver driver = new org.apache.derby.jdbc.ClientDriver();
      private static String URLDerbyDB = "jdbc:derby://localhost:1527/MALLNODO";
      private static String usuario = "mallnodo";
      private static String clave = "mallnodo";

      public static Connection getConexion() throws SQLException {

      DriverManager.registerDriver(driver);
      cn = DriverManager.getConnection(URLDerbyDB, usuario, clave);
      return cn;

      }

      }

      Borrar
  3. Recien me estoy iniciando en POO y por ende en java. encontre tu pagina hoy y la voy a seguir de cerca para aprender a ser un buen progrmador java. me parece genial lo que haces ayudandonos a los demas a entender esta tecnologia. saludos

    ResponderBorrar
    Respuestas
    1. Saludos estimado Guido, es un gusto tenerte por aquí en nuestro blog.
      Gracias por tu comentario, en realidad tratamos de explicar cada fragmento de código, de la forma más detallada posible; aunque, reconocemos que en ciertas ocasiones se nos escaparán algunas cosas, por lo cual estamos siempre pendiente de las sugerencias y/o recomendaciones que nos puedan hacer nuestros amigos de la web, como tú.
      Te invitamos a seguirnos a través de las redes sociales, encontrarás los links en la barra lateral de esta web.
      Pronto estaremos subiendo nuevos códigos.
      Bendiciones...

      Borrar
  4. import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;

    public class Conexion {

    private String host="localhost",user ="root",pass="1132asdf",db="manu";
    private Connection conec;

    public boolean Conectar()
    {
    try
    {
    Class.forName("com.mysql.jdbc.Driver");
    conec = DriverManager.getConnection("jdbc:mysql://"+host+"/"+db,user,pass);
    return true;
    }catch(Exception ex)
    {
    ex.printStackTrace();
    return false;
    }

    }

    public boolean cargarPersona(String nombre,String apellido, int edad)
    {
    try
    {
    Statement st;
    st = conec.createStatement();
    String sql = "INSERT INTO persona(nombre,apellido,edad) values('"+nombre+"','"+apellido+"',"+edad+")";
    st.execute(sql);
    return true;
    }
    catch(Exception ex)
    {
    ex.printStackTrace();
    return false;
    }

    }

    }

    ResponderBorrar
  5. public class Main {

    public static void main(String[] args) {
    // TODO Apéndice de método generado automáticamente
    Conexion conex = new Conexion();
    if(conex.Conectar())
    {
    System.out.println("Conexion correctamente");
    if(conex.cargarPersona("","",45))
    {
    System.out.println("La carga ha sido correcta");
    }
    else
    {
    System.out.println("Hubo errores en la carga");
    }
    }
    else
    {
    System.out.println("Hubo un error en la conexion");
    }



    }

    }

    ResponderBorrar
  6. Hola la mayoria de ustedes no agrego el driver y la conexiones que tiene no las manden a llamar en ningun momento y les dejo esta conexion para ver si les funciona o diganme que piensan

    public class Conexion {

    public static Connection GetConnection() throws SQLException
    {
    Connection conexion=null;
    // String url = “jdbc:sqlserver://192.168.1.8:1433;databaseName=ejercicio2”;
    //Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
    //System.out.println(“El driver de MSSQL se realizo con exito”);
    //connSQLServer = DriverManager.getConnection(url, “sa”, “Luis12340”);

    try
    {
    Class.forName(“com.mysql.jdbc.Driver”);
    String url = “jdbc:mysql://localhost:3306/formulario1”;

    conexion= DriverManager.getConnection(url, “root”, “1234”);
    }
    catch(ClassNotFoundException ex)
    {
    JOptionPane.showMessageDialog(null, ex, “Error1 en la Conexión con la BD “+ex.getMessage(), JOptionPane.ERROR_MESSAGE);
    conexion=null;
    }
    catch(SQLException ex)
    {
    JOptionPane.showMessageDialog(null, ex, “Error2 en la Conexión con la BD “+ex.getMessage(), JOptionPane.ERROR_MESSAGE);
    conexion=null;
    }
    catch(Exception ex)
    {
    JOptionPane.showMessageDialog(null, ex, “Error3 en la Conexión con la BD “+ex.getMessage(), JOptionPane.ERROR_MESSAGE);
    conexion=null;
    }
    finally
    {
    return conexion;
    }
    }

    ResponderBorrar
  7. Tengo mi aplicacion en Java funciona perfecto en mi PC, pero ahora la monte un servidor para mysql conecto remota bien pero mi aplicacion no conecta con mysql, si me ayudan por favor gracias

    public BaseData(String DB, String Usuario, String Clave){
    try{
    DBName=DB;
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    con = DriverManager.getConnection("jdbc:mysql://192.168.1.104:3306/personal" + DB, Usuario, Clave);
    isConect=true;
    System.out.println("Conexion Correcta!!");
    }catch(SQLException e){
    isConect=false;
    e.getStackTrace();
    }catch(Exception ex){
    isConect=false;
    ex.getStackTrace();
    }
    }

    ResponderBorrar
  8. import java.sql.*;
    public class ConectarBaseDeDatos {

    protected Connection coneccion;

    private String Driver="com.mysql.jdbc.Driver";
    private String url="jdbc:mysql://localhost:3306/basededatos4";
    private String user="root";
    private String password="admin";


    public void Conectar() throws Exception{

    Class.forName(Driver);
    coneccion=DriverManager.getConnection(url, user, password);

    }

    public void Cerrar() throws Exception{

    if(coneccion!=null){
    if(coneccion.isClosed()){
    coneccion.close();
    }
    }

    }

    }

    ResponderBorrar
  9. import java.util.ArrayList;
    import java.sql.*;

    import com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException;
    public class DAOIMPLEMENTS extends ConectarBaseDeDatos implements DAO{

    @Override
    public void Alta(Persona persona) throws Exception {
    // TODO Auto-generated method stub
    Conectar();

    try{
    PreparedStatement ps =coneccion.prepareStatement("insert into persona(dni,nombre) values (?,?)");
    ps.setInt(1, persona.getDni());



    ps.setString(2, persona.getNombre());
    ps.executeUpdate();
    }catch(MySQLIntegrityConstraintViolationException e ){
    e.printStackTrace();
    }

    catch(Exception e){
    e.printStackTrace();
    }

    Cerrar();
    }

    @Override
    public void Baja(int dni) throws Exception {
    // TODO Auto-generated method stub

    Conectar();

    PreparedStatement ps=coneccion.prepareStatement("delete from persona where dni=?");
    ps.setInt(1, dni);

    ps.executeUpdate();
    Cerrar();
    }

    @Override
    public void Modificar(int dni, String nuevoNombre) throws Exception {
    // TODO Auto-generated method stub

    Conectar();
    PreparedStatement ps=coneccion.prepareStatement("update persona set nombre=? where dni=?" );
    ps.setString(1, nuevoNombre);
    ps.setInt(2, dni);

    ps.executeUpdate();
    Cerrar();


    }

    @Override
    public ArrayList Consultar() throws Exception {
    // TODO Auto-generated method stub
    Conectar();
    PreparedStatement ps=coneccion.prepareStatement("select * from persona");

    ResultSet rs=ps.executeQuery();
    ArrayList listaPersonas=new ArrayList();

    while(rs.next()){

    Persona persona=new Persona();
    persona.setDni(rs.getInt("dni"));
    persona.setNombre(rs.getString("nombre"));

    listaPersonas.add(persona);
    }




    Cerrar();
    return listaPersonas;
    }


    }

    ResponderBorrar
  10. public Ventana() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);


    modelo.addColumn("dni");
    modelo.addColumn("nombre");


    JLabel lblDni = new JLabel("dni");
    lblDni.setBounds(10, 11, 46, 14);
    contentPane.add(lblDni);

    JLabel lblNombre = new JLabel("nombre");
    lblNombre.setBounds(10, 35, 46, 14);
    contentPane.add(lblNombre);

    textField_dni = new JTextField();
    textField_dni.setBounds(66, 8, 86, 20);
    contentPane.add(textField_dni);
    textField_dni.setColumns(10);

    textField_nombre = new JTextField();
    textField_nombre.setBounds(66, 32, 86, 20);
    contentPane.add(textField_nombre);
    textField_nombre.setColumns(10);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(213, 11, 137, 106);
    contentPane.add(scrollPane);

    table = new JTable();
    scrollPane.setViewportView(table);

    table.setModel(modelo);

    ResponderBorrar
  11. JButton btnNewButton = new JButton("alta");
    btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {

    try{
    ArrayList listaPersonas =dao.Consultar();

    for(Persona persona : listaPersonas){

    if(Integer.parseInt(textField_dni.getText())==persona.getDni()){

    error= false;
    System.out.println("el id ya existe");

    }


    }

    if(error =true){
    Persona persona=new Persona();
    persona.setDni(Integer.parseInt(textField_dni.getText()));
    persona.setNombre(textField_nombre.getText());
    try{
    dao.Alta(persona);
    textField_dni.setText("");
    textField_nombre.setText("");


    }catch(MySQLIntegrityConstraintViolationException e ){
    e.printStackTrace();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    }



    }catch(MySQLIntegrityConstraintViolationException e ){
    e.printStackTrace();
    }catch (Exception e){
    e.printStackTrace();
    }



    }
    });
    btnNewButton.setBounds(0, 227, 89, 23);
    contentPane.add(btnNewButton);

    JButton btnNewButton_1 = new JButton("baja");
    btnNewButton_1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {

    int dni=Integer.parseInt(textField_dni.getText());
    try{
    dao.Baja(dni);
    textField_dni.setText("");
    textField_nombre.setText("");
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    });
    btnNewButton_1.setBounds(116, 227, 89, 23);
    contentPane.add(btnNewButton_1);

    ResponderBorrar
  12. JButton btnNewButton_2 = new JButton("modificacion");
    btnNewButton_2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

    int dni=Integer.parseInt(textField_dni.getText());
    String nuevoNombre=textField_nombre.getText();


    /*if(textField_dni.equals("")){

    }
    */
    try{
    dao.Modificar(dni, nuevoNombre);
    textField_dni.setText("");
    textField_nombre.setText("");

    }catch(Exception e1){
    e1.printStackTrace();
    }

    }
    });
    btnNewButton_2.setBounds(213, 227, 89, 23);
    contentPane.add(btnNewButton_2);

    JButton btnNewButton_3 = new JButton("consulta");
    btnNewButton_3.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {


    try{
    ArrayList listaPersonas= dao.Consultar();
    modelo=new DefaultTableModel();
    modelo.addColumn("dni");
    modelo.addColumn("nombre");

    for(Persona persona : listaPersonas){

    String [] fila={Integer.toString(persona.getDni()),persona.getNombre()};

    modelo.addRow(fila);
    }
    table.setModel(modelo);
    }catch(Exception e1){
    e1.printStackTrace();
    }
    }
    });
    btnNewButton_3.setBounds(335, 227, 89, 23);
    contentPane.add(btnNewButton_3);
    }

    ResponderBorrar
  13. tengo un problema con esto.....

    package TresEnRaya1;

    import javax.swing.JLabel;


    /**
    *
    * @author DELL
    */
    public class ModelGame {

    private String turno;
    private boolean end;
    private boolean draw;
    private JLabel cuadroj1;
    private JLabel cuadroj2;
    private String [][] tablero;
    private int cantMovidas;

    public ModelGame(){
    turno = "X";
    end = false;
    draw = false;
    tablero = new String [3][3];
    cantMovidas = 0;

    }

    public void marcarCasilla(int i, int j, JLabel [][] casillas){
    if (!end){
    if (tablero [i][j] == null){
    tablero [i][j] = turno ;
    casillas [i][j].setText(turno);
    verificarEstado();
    if (!end){
    if(turno.equals("X")){
    turno="O";

    }else{
    turno="X";
    }
    }
    }
    }
    }

    public void resetGame() {

    }

    public void setJugadores(JLabel j1, JLabel j2) {

    }

    private void verificarEstado() {
    verificarFilas();
    if(!end){
    verificarColumnas();
    if(!end){
    verificarDiagonalP();
    if(!end){
    verificarDiagonalS();
    if(!end){
    if(cantMovidas==9){
    draw = true;
    end = true;
    }
    }
    }
    }
    }
    }


    private void verificarFilas() {
    for(int i=0; i<3; i++){
    boolean win = true;
    for(int j=0; j<3; j++){
    if(tablero[i][j]== null ││ !tablero[i][j].equals(turno)) {
    win = false;
    }
    }
    }

    }

    private void verificarColumnas() {
    throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }

    private void verificarDiagonalP() {
    throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }

    private void verificarDiagonalS() {
    throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }
    }

    ResponderBorrar