Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Java + Query sql

  1. #1

    Java + Query sql

    Sto realizzando un'applicazione java che crea una playlist musicale a partire dalla directory musicale presente sul proprio disco.
    In una playlist posso avere la stessa canzone più volte ripetuta.
    ad esempio posso avere la seguente playlist:

    1 ligabue certe notti
    2 vasco siamo soli
    3 renga amore racconta
    4 ligabue certe notti

    nel momento in cui decido di cancellare la canzone alla posizione 4, l'output diventa il seguente:

    1 vasco siamo soli
    2 renga amore racconta

    praticamente mi cancella tutte le canzoni "doppie" che trova e invece vorrei che il mio output fosse:

    1 ligabue certe notti
    2 vasco siamo soli
    3 renga amore racconta

    vi posto alcuni pezzi di codice per cercare di farmi aiutare a capire dove sta l'errore:

    classe Playlistpanel(che si occupa di interfacciare java al database)
    codice:
    MyButton remove = new MyButton("Rimuovi file selezionati", new ImageIcon("resources/no.png"));
            remove.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try {
                        int[] rows = table.getSelectedRows();
                        for (int i = 0; i < rows.length; i++) {
                            int row = rows[i];
                            if (row == pos)
                                pos = -1;
                            else if (row < pos) pos--;
                            String key_mp3 = table.getModel().getValueAt(row, 1) + "";
                            DBManager.deleteFileFromPlaylist(key_mp3, key);
    
                        }
                        refresh();
                    } catch (SQLException e1) {
                        e1.printStackTrace();
                    }
                }
            });
    classe Dbmanager (si occupa di gestire il database e interrogazioni sql)
    codice:
    public static void deleteFileFromPlaylist(String key_mp3, String key_playlist) throws SQLException {
            stat.executeUpdate("DELETE FROM PLAYLIST_MP3 where key_mp3=" + key_mp3 + " AND key_playlist=" + key_playlist);
        }
    
    public static Vector<Vector<String>> getPlaylist(String key) throws SQLException {
            Vector<Vector<String>> ret = new Vector<Vector<String>>();
            ResultSet resultSet = stat.executeQuery("SELECT * FROM PLAYLIST_MP3 JOIN MP3 ON(KEY_MP3=MP3.KEY) WHERE KEY_PLAYLIST=" + key + " ORDER BY pos");
    
            while (resultSet.next()) {
                Vector<String> vector = new Vector<String>();
                vector.addElement(resultSet.getString("name"));
                vector.addElement(resultSet.getString("key"));
                vector.addElement(resultSet.getString("path"));
                vector.addElement(resultSet.getString("artist"));
                vector.addElement(resultSet.getString("album"));
                vector.addElement(resultSet.getString("title"));
                vector.addElement(resultSet.getString("time"));
                vector.addElement((resultSet.getInt("pos") + 1) + "");
                ret.add(vector);
            }
            System.out.println("ret = " + ret);
    
            return ret;
        }
    sapreste gentilmente dirmi come risolvere l'errore che commetto?
    grazie

  2. #2
    il problema è che quando vai a cancellare dalla playlist la delete la fai x tutti gli elementi che hanno lo stesso "id_mp3" e quindi stessa canzone.

    io ti consiglierei (se non esiste già) di aggiungere un campo id sulla tabella PLAYLIST_MP3 e poi effettuare la delete filtrando su questo campo e ovviamente KEY_PLAYLIST.

  3. #3
    il campo id di cui tu parli non corrisponde al mio pos?

    la mia tabella è:

    nome id_mp3_rootdirectory path_directory artista album titolo durata pos

  4. #4
    si potrebbe essere pos...
    se pos + key_playlist identifica un elemento univoco della playlist

    un piccolo chiarimento pos in quale tabella si trova?perchè dal post precedente mi sembra che si trovi in MP3 e non PLAYLIST_MP3

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.