Java - Error de conexión a base de datos en java con netbeans

 
Vista:
Imágen de perfil de Arturo
Val: 6
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Error de conexión a base de datos en java con netbeans

Publicado por Arturo (3 intervenciones) el 12/05/2020 14:36:12
Estoy aprendiendo poco a poco y ahora quiero usar bases de datos.
Usando Netbeans 11.1 intento establecer una conexión con una tabla en SQLite, para ello hago lo siguiente

Tengo agregado en Services/Databases el driver de SQLite y he creado una conexión con mi base de datos que, al probarla, funciona sin problemas.

En mi código importo las siguientes interfaces:

1
2
3
4
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

Creo las variables en mi clase para establecer los parámetros:

1
2
Connection conn = null;
Statement stmt = null;

Y en el ActionPerformed del botón *conectar* tengo este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private void btnConectarActionPerformed(java.awt.event.ActionEvent evt) {
    // Se ha pulsado el botón CONECTAR
 
    // Establece la base de datos
    String BasedeDatos = "jdbc:sqlite:C:\\Users\\Arturo\\Dropbox\\Ubicaciones\\lista.db";
    // Intenta la conexión
    try {
 
        Class.forName("org.sqlite.JDBC").newInstance();
 
        conn = DriverManager.getConnection(BasedeDatos);
        // Hay conexión
        if( conn == null ) {
            JOptionPane.showMessageDialog(this, "No se ha podido conectar","Conexión",JOptionPane.ERROR_MESSAGE);
        } else {
            JOptionPane.showMessageDialog(this, "Conectado a la base de datos","Conexión",JOptionPane.INFORMATION_MESSAGE);
        }
        stmt = conn.createStatement();
 
        }
    catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Aunque intento verificar si se ha producido la conexión, en realidad nunca llega a entrar al **if**, se detiene la ejecución antes y me devuelve lo siguiente:

may 11, 2020 7:11:38 PM com.mycompany.prueba.Principal btnConectarActionPerformed
GRAVE: null
java.lang.ClassNotFoundException: org.sqlite.JDBC
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.mycompany.prueba.Principal.btnConectarActionPerformed(Principal.java:283)
at com.mycompany.prueba.Principal.access$400(Principal.java:60)
at com.mycompany.prueba.Principal$4.actionPerformed(Principal.java:119)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

¿Podéis ayudarme con esto?
¿Qué estoy haciendo mal?
¿Cómo lo soluciono?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Arturo
Val: 6
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Error de conexión a base de datos en java con netbeans

Publicado por Arturo (3 intervenciones) el 16/05/2020 10:38:40
Hola,
bueno, el error java.lang.ClassNotFoundException: org.sqlite.JDBC se produce porque el programa no tiene acceso al archivo jar correspondiente.

La solución pasa, en netbeans 11.1, por agregar en la sección de dependencias una nueva, buscar sqlite e importar la versión con la que quieres trabajar. Netbeans la descarga y la agrega al proyecto.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar