2013-10-26 107 views
0

我有一個數據庫。因爲我無法檢查設備中歌曲的添加/刪除,我每次啓動應用程序時都會更新我的歌曲表格。因此,我得到了duplicate of what ever already there in database。這就是爲什麼我的數據庫大小在每次啓動時都在增加。我的問題是how to insert if any new songs are addedremoved the song from database if any old song deleted每次啓動應用程序時數據庫大小增加

Cursor cursorSong = this.managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
projection,selection, null, null); 
while (cursor.moveToNext()) { 

       String sdata = cursor.getString(0); 
          ContentValues initialValues = new ContentValues(); 

       initialValues.put(KEY_PATH, sdata); 

       mDB.insert(DataHelper.SONG_TABLE, null,initialValues); 
      } 

回答

1

這就像同步您的應用程序數據庫與手機上的歌曲。

從DB刪除已刪除的歌曲: 如果您要維護歌曲的文件路徑,請檢查文件是否存在於該位置。如果文件不存在,就是刪除了文件/歌曲。所以,刪除DB中的這個條目。

要在DB中添加新條目: 在添加新條目之前,請檢查現有數據庫中新文件的文件路徑。如果路徑已經存在,請不要再次插入。

通過這樣做,您將刪除DB中不需要的條目,並且DB僅維護設備上的現有文件。

+0

但只是在數據庫中添加/刪除1首歌曲,我必須將它與數據庫中的1000首歌曲進行比較..這可以解決我的問題,但會增加性能問題 –

+0

爲避免數據庫大小增加,您必須避免冗餘。別無退路。正如我所看到的,您一次又一次地插入所有歌曲。 另一個可怕的想法是太讓你的文件路徑列有主鍵。所以,它會自動避免重複。 :) 接受答案! – Charan

+0

也投了我的問題 –

相關問題