public ArrayList<String[]> mostrarDatos(String nombreTabla, String[] campos) 
    {
        int contador;
        String[] resultado;
        
        // Creamos el arraylist donde se guardará los resultados de la consulta
        ArrayList<String[]> tablaResultado = new ArrayList<String[]>();
        try 
        {
            this.bd.open();
            this.bd.beginTransaction(SqlJetTransactionMode.READ_ONLY);
            this.table = this.bd.getTable(nombreTabla);
            // Ordenamos la consulta por clave primaria
            this.cursor = table.order(table.getPrimaryKeyIndexName());   
            // Si no es fin de cursor 
            if (!cursor.eof()) 
            {
                do 
                {
                    // Inicializamos la variable a 0 antes de entrar en el segundo while
                    contador=0;
                    // Creamos un array de la longitud de los campos de la tabla
                    resultado = new String[campos.length];
                    // Mientras el contador sea menor que la longitud de campos de la tabla
                    while(contador<campos.length)
                    {
                        if(contador==0)
                            resultado[contador]=Long.toString(cursor.getRowId());
                        else
                        {
                            // si el campo que indica el contador en el array es un tipo float
                            if(cursor.getFieldType(campos[contador])==SqlJetValueType.FLOAT)
                                // cambia el resultado a string y lo guarda en resultado
                                resultado[contador] = Double.toString(cursor.getFloat(campos[contador]));
                            // Si es tipo integer
                            else if(cursor.getFieldType(campos[contador])==SqlJetValueType.INTEGER)
                                // cambia el resultado a string y lo guarda en resultado
                                resultado[contador] = Long.toString(cursor.getInteger(campos[contador]));
                            // Si es tipo text
                            else if(cursor.getFieldType(campos[contador])==SqlJetValueType.TEXT)
                                // Guarda en resultado el string
                                resultado[contador] = cursor.getString(campos[contador]);
                            // Aumentamos el valor del contador para que pase por todos los campos de la tabla
                        }
                        contador++;
                    }
                    // Añadimos en el arrayList el resultado según el contador
                    tablaResultado.add(resultado);
                } 
                while(cursor.next());
            }
            cursor.close();
            this.bd.commit();
            this.bd.close();
            
        } 
        catch (SqlJetException ex) 
        {
            Logger.getLogger(BD.class.getName()).log(Level.SEVERE, null, ex);
        }            
        return tablaResultado;
    }