Una de las tareas más típicas de un desarrollador es conectar su aplicación con una base de datos. Por esa misma razón, en está ocasión vamos a aprender a conectar dos populares herramientas de desarrollo: el lenguaje de programación Java y el gestor de base de datos MySQL, y todo desde Netbeans ¡Manos a la obra!
Tabla de Contenido
Utilicemos el conector oficial de MySQL
Necesitamos un componente desarrollado por el equipo de MySQL llamado Connector/J, así que es hora de ir a su página oficial.

Una vez ahí, en la opción Select Operating System elegimos Platform Independent y presionamos el botón Download en la opción que más nos convenga.

En la siguiente página, nos pedirá iniciar sesión con una cuenta Oracle. No es necesario, en su lugar utilizaremos la opción No thanks, just start my download.

Colocando nuestra descarga donde mejor nos convenga.

Con el software de compresión de datos que tenga nuestro equipo, extraemos el contenido de la descarga.

El archivo que nos importa es mysql-connector-java. Se trata de un archivo con extensión JAR, el número de versión puede variar.

Configurar Netbeans es muy simple y fácil
Es momento de abrir Netbeans, la versión que usamos en este artículo es la 12.2 de Apache –Es momento de abandonar ese viejo y desactualizado Netbeans 8– Lo primero, es ir al menú Tools y seleccionar Libraries.

En el Ant Library Manager, utilizamos el botón New Library que se encuentra en la parte inferior de la ventana.

En la ventana de diálogo, establecemos el Library Name y presionamos el botón OK.

A continuación, presionamos el botón Add JAR/Folder.

Localizamos el archivo mysql-connector-java que descargamos al principio. Al encontrarlo lo seleccionamos y presionamos el botón Add JAR/Folder.

Finalmente presionamos el botón OK para cerrar el Ant Library Manager.

Creando el proyecto para conectarnos a MySQL
En el menú File, seleccionamos New Project.

En la lista de categorías, seleccionamos Java with Ant y en la opción Projects elegimos Java Application. Al terminar, presionamos el botón Next.

En la siguiente ventana, establecemos el Project Name, quitamos la marca a la opción Create main class y presionamos Finish.

Una vez cargue el proyecto, presionamos el botón derecho del ratón sobre la carpeta Source Packages. Inmediatamente seleccionamos New y luego Java Package.

En Package Name establecemos el nombre que llevará nuestro paquete y presionamos el botón Finish.

Es hora de crear la clase para realizar la conexión
Sobre el paquete recién creado, presionamos el botón derecho del ratón. Seleccionamos New y luego Java Class.

En Class Name, establecemos el nombre de la clase a Conectar, luego presionamos el botón Finish.

Con nuestra clase creada, es hora de utilizar la librería. En la carpeta Libraries, presionamos el botón derecho del ratón y seleccionamos Add Library.

En Available Libraries, seleccionamos nuestra librería y presionamos el botón Add Library.

Es hora de escribir el código de nuestra clase. Primero, añadimos los import necesarios.
import java.sql.Connection;
import java.sql.DriverManager;
Ahora, declaramos dentro de la clase la constante URL que incluirá los siguientes valores:
public static final String URL = "jdbc:mysql://localhost:3306/pruebajava";
Como podemos observar, nos conectamos usando el nombre de dominio y puerto del servidor de base de datos. El último valor (pruebajava en nuestro ejemplo) es el nombre de la base de datos.
Ahora, añadimos el usuario y la clave (Recuerde no usar root en producción)
public static final String USER = "root";
public static final String CLAVE = "";
Ahora, creamos un método que regresa un valor de tipo Connection.
public Connection getConexion(){
Instanciamos el objeto Connection.
Connection con = null;
Después, dentro de un try, llamamos a la clase que maneja el Driver para la base de datos. También haremos la conexión pasando las tres constantes iniciales.
try{
Class.forName("com.mysql.cj.jdbc.Driver");
con = (Connection) DriverManager.getConnection(URL, USER, CLAVE);
}
En el catch, mostramos cualquier posible error de conexión
catch(Exception e){
System.out.println("Error: " + e.getMessage());
}
Finalmente, devolvemos la variable de tipo Connection y cerramos el método.
return con;
}
La clase completa luce así:
package conectar;
import java.sql.Connection;
import java.sql.DriverManager;
public class Conectar {
public static final String URL = "jdbc:mysql://localhost:3306/pruebajava";
public static final String USER = "root";
public static final String CLAVE = "";
public Connection getConexion(){
Connection con = null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
con = (Connection) DriverManager.getConnection(URL, USER, CLAVE);
}catch(Exception e){
System.out.println("Error: " + e.getMessage());
}
return con;
}
}
Hagamos una prueba de conexión
Es momento de poner a prueba todo lo que hemos hecho. En el servidor de base de datos, creamos una base de datos con el mismo nombre que usamos en la clase Conectar.

Para nuestra prueba estará vacía.

De regreso en nuestro proyecto, presionamos el botón derecho del ratón sobre el paquete, seleccionamos New y luego JFrame Form.

El Class Name será PruebaConectar, después presionamos el botón Finish.

Una vez aparezca el formulario, vamos a la sección Palette (usualmente a la derecha de la pantalla) y en Swing Controls seleccionamos Button.

Ponemos el botón en nuestro formulario, después de jugar un poco con sus propiedades, nos ha quedado como sigue:

Ahora, presionamos el botón derecho sobre nuestro botón. La opción seleccionada es Change Variable Name.

El nombre de nuestra variable será btnAceptar, al terminar de escribir el nombre, usamos el botón OK.

Le damos un doble click a nuestro botón para comenzar a editar su método ActionPerformed. Necesitamos instancias nuestra clase Conectar.
Conectar conecta = new Conectar();
Después, creamos una variable de tipo Connection que reciba la conexión creada por nuestro método getConexion de la clase Conectar.
Connection con = conecta.getConexion();
Finalmente, con un JOptionPane, mostramos un mensaje indicamos que hemos logrado la conexión.
JOptionPane.showMessageDialog(null, "Conexión establecida con éxito");
No olvidemos añadir los import al inicio de nuestra clase.
import java.sql.Connection;
import javax.swing.JOptionPane;
Ahora, presionamos el botón derecho del ratón sobre nuestro proyecto, la opción a elegir es Properties.

En la sección Run, presionamos el botón Browse que está a un lado de Main Class.

Entonces, seleccionamos nuestra clase PruebaConectar y presionamos el botón Select Main Class.

De regreso a la ventana anterior, simplemente presionamos el botón OK.

Con la tecla F6 podemos echar a andar nuestra aplicación. Si todo salió bien. Obtendremos el mensaje de confirmación al presionar el botón que hicimos dentro del formulario.

DESCARGA EL PROYECTO NETBEANS PARA PROBAR
¡Y eso es todo por ahora! ¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.

Docente, IT Manager, Blogger & Developer. Escribo por diversión, educo por pasión. | Grandstanding is not my thing.
Hola Xamus, gracias por el contenido me ha servido mucho despues de revisar varios tutoriales. sin embargo me quedo colgada en como queda el codigo del Boton ya que esta por partes y no se donde colocar lo que indicas para hacer la llamada a la conexion. Que posiblidades hay de que muestres el codigo en una captura (del Boton “conectar a DB”). Descargue el ejemplo pero ahi no logro verlo, soy nueva en esto, muchas gracias.
Saludos Jacky.
Si le das doble click al botón “Conectar a DB” te debe crear el método actionPerformed, ahí dentro es donde debe colocar estas líneas de código
Conectar conecta = new Conectar();
Connection con = conecta.getConexion();
JOptionPane.showMessageDialog(null, "Conexión establecida con éxito");
Espero te sirva.
Disculpa amigo y sirve tambien directamente de MySQL Workbench sin utilizar el otro programa que utilisaste??
Sí, sin problemas. Yo uso phpmyadmin que viene default con xampp. Pero también funciona.
Si funciona solo agregas: el usuario por ejemplo: puerto “”,usuario “root” ,password=”admin”
por defecto, al menos que lo hayas cambiado los valores
segui paso a paso tus instrucciones y me funciono a la perfeccion! solo tengo una duda, en caso que hubiese un error a la base de datos o que no se pudiera conectar a la bd, al momento de dar click en el boton, como puede darme un mensaje de ” error al conectar a bd”
ejemplo:
Conectar conecta = new Conectar();
JOptionPane.showMessageDialog(null, “Conexión establecida con éxito”);
y aqui abajo que valores tendria que poner para establecer un dialogo que diga mas o menos lo siguiente.
System.out.println(“No se ha podido carcar a la Base de Datos”+e.getMessage());
Perdon! ojala me de a entender jejeje
Hola, gracias por tus comentarios.
Si te fijas, en el método getConexion de la clase ya está considerado eso dentro del try – catch.
Hola Xamus, gracias por el tutorial , muy ilustrativo, una pregunta, como hago para que en el JOPanel.swhoMessage(); salga es el mensaje real del estado de la conexión, porque imprime el mensaje que le coloque ahí, no importa si se conecta o no. El mensaje del estado real de la conexion esta en la clase getConexion();
Saludos Nairo.
Puedes usar un try – catch con la clase SQLException que tiene el método getMessage() con el mensaje real. También puedes usar la misma clase Connection que si mal no recuerdo tiene un método similar.
Buen tutorial, me funcionó para hacer la conexión desde netbeans 12.4
Gracias por dejarnos saber que te ha servido.
gracias! estaba perdido por que hace años que no usaba netbeans y estoy utilizando ahora la versión 12 y si cambia al estar revisando los tutoriales.
Gracias por tus palabras. Espero te sirva lo que encuentres aquí.
El único sitio que encontré que explicase tan bien el paso a paso de una conexión de MySql con java. Muchas gracias!!
¡Gracias! Nos alegra que te sirva.
Saludos
Oigan una pregunta cómo puedo hacer para que los datos de registro que haga de NetBeans se almacenen en MySQL
Saludos, checa por favor: https://www.cablenaranja.com/como-insertar-datos-desde-una-aplicacion-java-hacia-mysql/
Yo siempre uso Netbeans en todos mis ejemplos
estoy intentando descargar mysql pero al momento de instalar me sale un Connecto/net y me sale que no lo puedo descargar y me sale error en todo no me puedo conectar
Saludos Carlos. MySQL no requiere el connector/net para su instalación ¿Seguro qué estás instalando o estas haciendo algún ejercicio?
Saludos, hice las pruebas, pero, sale una conexión… “exitosa” colocando información erronea de la bdd, descargué el archivo que subió, pero me sale errores, uno de ellos, me dice que no estoy usando la versión: illegal Source Level: JDK 15, según mi netbeans, tiene la JDK: 8, gracias
Saludos Geovanny. En el caso del ejemplo todo lo que tienes que hacer es modificar la ruta del JDK hacia aquel que tengas instalado.
En cuanto a las pruebas que mencionas, dentro del botón coloca un try – catch que te permita saber si algo ha salido mal, por ejemplo:
try{
Conectar conecta = new Conectar();
Connection con = conecta.getConexion();
JOptionPane.showMessageDialog(null, "Conexión establecida con éxito");
}catch(IOException e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
Buenas tardes disculpe esas lineas de comando se ingresan en el renglón adonde dice actionPerformed?
La última parte si, ya lo primero es una clase que debe ir en un archivo nuevo.
Soy una estudiante de sistemas y el tener clases de forma casi autodidacta es difícil, pero tus instrucciones lo hicieron algo exageradamente fácil de entender y hacer, espero que sigan existiendo personas como tu, que explican con peras y manzanas.
Saludos
Gracias por tu comentario. Me alegra que te sirva, saludos.
Soy estudiante y tengo la versión 13 de apache y me sale error en el código del botón no reconoce la última línea de código a pesar de que me corrijie la librería y me sigue marcando en rojo, ¿que puede ser ?
Saludos Alexander.
La última línea de código del botón es esta:
JOptionPane.showMessageDialog(null, "Conexión establecida con éxito");
¿Tiene el mensaje de la salida del compilador? Así podría ver que es…
Muchísimas gracias el código funciona a la perfección
Weeeey te la chupo, el tutorial sirve con madreeees, salvado de reporobar un semetre por tu ayuda <3
MUchas gracias, me ha funcionado perfecto. Saludos
Muy buenas noches tengo este código en netbeans
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package eMpresa;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author HALC
*/
public class empresa extends javax.swing.JFrame {
private static Connection con;
private static final String driver=”com.mysql.cj.jdbc.Driver”;
private static final String user=”root”;
private static final String pass=” “;
private static final String url=”jdbc:mysql://localhost:3306/empleados”;
public void Conector() throws SQLException{
con=null;
try{
Class.forName(driver);
con=DriverManager.getConnection(url, user, pass);
if(con!=null){
jLabel1.setText(“Conexión Establecida”);
}
}
catch(ClassNotFoundException|SQLException e){
jLabel1.setText(“La conexion no se establecio ” + e);
}
}
/**
* Creates new form empresa
*/
public empresa() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings(“unchecked”)
//
private void initComponents() {
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText(“Conectar”);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jLabel1.setText(“Estado: “);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(25, 25, 25)
.addComponent(jButton1)
.addGap(18, 18, 18)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 270, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(19, 19, 19)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(248, Short.MAX_VALUE))
);
pack();
}//
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Conector();
} catch (SQLException ex) {
Logger.getLogger(empresa.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if (“Nimbus”.equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(empresa.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(empresa.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(empresa.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(empresa.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new empresa().setVisible(true);
}
});
}
// Variables declaration – do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
// End of variables declaration
}
estoy utilizando xampp
hago todo lo que dice aquí,
pero la conexión no se establecio java.sql.SQLException:Access denied for user ‘root’ @ ‘localhost’ (Using password=YES;
ahora pregunto ¿hace falta algo para que funcione? cmd, path o que cambio mas; por favor le agradezco su colaboración
Parece que es esta línea:
private static final String pass=” “;
El usuario root no tiene contraseña, por ende no debe haber un espacio entre las comillas, es decir:
private static final String pass=”“;
De igual manera, recuerda por favor no usar root para un proyecto real.
Cordial saludo Xamus:
Muy buenas tardes, muchas gracias por la ayuda, un mes preguntándole al señor que esta dando el curso por youtube y nunca me dijo nada, quedo inmensamente agradecido, que tenga un resto de día excelente, muchos éxitos.
Hola, tengo copiado el mismo código que tu incluso pille la misma versión de conector, pero me sale esto, sabes xk no consigo realizar la conexión, llevo ya varios días así.
Error: class com.mysql.cj.jdbc.ConnectionImpl cannot be cast to class com.sun.jdi.connect.spi.Connection (com.mysql.cj.jdbc.ConnectionImpl is in unnamed module of loader ‘app’; com.sun.jdi.connect.spi.Connection is in module jdk.jdi of loader ‘app’)
Saludos Morenu:
El mensaje “com.mysql.cj.jdbc.ConnectionImpl is in unnamed module of loader ‘app’;” parece indicar que el conector no esta funcionando correctamente. Revisa si hiciste correctamente los primeros pasos, especilamente la parte donde se añade la librería del conector.
Hola, una pregunta, si quiero crear un botón que en vez de conectarme me desconecte de la Base de Datos que tengo que hacer???
Esta línea:
Conectar conecta = new Conectar();
Sácala del botón de conexión y ponla al principio de la clase PruebaConectar
Luego en el botón para desconectar escribes:
con.close(); // Cierra la conexión
con = null; // Destruye el objeto de la memoria
Prueba y me dices.
Perfecto, muy bien explicado y muy claro todo, así da gusto.
He conectado a la primera.
Muchas gracias por tu tutorial ha sido de gran ayuda.
Excelente contenido, gracias a que todo está muy bien explicado he logrado mi primera conexión con éxito.
Muchas gracias!