Problema "el archivo dado no existe" con la conexión UCanAccess

Estoy tratando de conectarme a una base de datos de Microsoft Access en Eclipse (Mars 4.5.0; Java 1.8) en una Mac (el capitaine). Sigo recibiendo el error: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.4 given file does not exist: Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb

Este es mi código:

import java.sql.*;

public class DbAccess
{
    public static void main(String[] args) 
    {

        try
        {
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            Connection conn=DriverManager.getConnection("jdbc:ucanaccess://Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb;");
            Statement stment = conn.createStatement();
            String qry = "SELECT * FROM Table1";

            ResultSet rs = stment.executeQuery(qry);
            while(rs.next())
            {
                String id    = rs.getString("ID") ;
                String fname = rs.getString("Nama");

                System.out.println(id + fname);
            }
        }
        catch(Exception err)
        {
            System.out.println(err);
        }

    }
}

Estoy seguro de que tiene algo que ver con las barras inclinadas del nombre de ruta, pero he intentado cada permutación y todavía obtengo el mismo error.

Respuesta 1

No estoy familiarizado con los sistemas de archivos Mac, pero ¿ha probado "jdbc: ucanaccess: /// ..." (incluida una barra oblicua adicional)?

Explicación:

La ruta al archivo de la base de datos sigue inmediatamente el jdbc:ucanaccess://prefijo de la URL de conexión, por lo que

jdbc:ucanaccess://Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb;

la ruta al archivo de la base de datos es

Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb

que se interpreta como una ruta relativa , relativa al directorio actual a nivel del sistema operativo vigente cuando se lanzó la aplicación Java.

Para que la ruta se interprete como una ruta absoluta , debe comenzar con una barra diagonal, es decir,

/Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb

por lo tanto, la URL de conexión debe ser

jdbc:ucanaccess:///Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb
Respuesta: 2

He estado haciendo JFrame durante un tiempo, y desde que comencé a usar Mouselistener (o cualquier lista de eventos) las cosas funcionarían sin problemas durante unos 2 minutos más o menos. Entonces obtendría una tonelada ...

En una aplicación que estoy desarrollando, estoy tratando de crear programáticamente un ImageButton que es una copia del ImageButton seleccionado, pero la imagen se colorea de una manera diferente, digamos rojo. Si uso el ...

No entendí por qué en este código que calcula las potencias de 2, la e se disminuye dentro del ciclo while: public class Power {public static void main (String [] args) {int e; ...

Estoy usando el siguiente código para enviar datos a un servidor TCP. Supongo que necesito usar socket.shutdownOutput () para indicar correctamente que el cliente ha terminado de enviar la solicitud. Es mi suposición ...