いくつかの手法を使用できます。
- 最後に変更されたタイムスタンプが変更されたかどうかを確認するために、ユーザーが追加したすべてのディレクトリをスキャンします。ファイルを再スキャンした場合。必要に応じて、優先度の低い別のスレッドでこれを実行できます。
- ユーザーがUIでオーディオトラックをクリックすると、ファイルが再スキャンされます。それが存在しない場合は、ユーザーに警告し、エントリを削除します。存在する場合はタイムスタンプをチェックし、それに応じて更新してください。
- ライブラリ全体を再スキャンするオプションをユーザーに提供します。
- ソングが変更されていることがわかっているフォルダのタイムスタンプがある場合は、それをすべてのサブフォルダと一緒に再スキャンして、それに従ってライブラリを更新することができます。
- ファイルがまだ存在する場合は、おそらくデータベースから削除する必要はありません。
(作成され、変更された)ファイルのタイムスタンプをチェックすると、データベースに何か更新を加える必要があるかどうかを知ることができます。
変更の可能性があることをユーザーに警告し、検出された変更の種類に基づいて再スキャンするかどうかを尋ねることもできます。サブディレクトリをトラバースして数千のファイルを処理することは、おそらくあなたが思うほど多くの時間を取ることはないでしょう。
ファイルを再スキャンするときに、実際にデータベースの既存のレコードと比較する必要はありません。ちょうどSQL UPDATEを実行してください。あなたがすでにSQLに精通していないなら、ネット上で利用可能ないくつかの例文を勉強して試してみることをお勧めします。スキャンしたファイルごとに1つのSQLトランザクションを実行すると、それはかなり長い時間がかかります。
お返事ありがとうございます。 1.誰かが音楽ライブラリフォルダを持っていて、その中に音楽がすべて*含まれている場合、トップレベルのフォルダだけがファイルの追加/削除時に「変更された」タイムスタンプを変更します。だからこれで私はいつdbを更新するのか知っていますが、私はまだすべてをスキャンし、結果として私のdbで変更する必要があるものを区別する必要があります。 2.これはフィーチャ= pよりもプログラムエラーのようです。 3.私はすでにこれを行っていますが、プロセスを簡単に自動化できるかどうかを知りたかったのです。 SQL Updateは、指定されたレコードのデータを変更するだけです。レコードを効率的に追加/削除する方法がわかりません。 – Tricky
元の質問を編集し、追加の考えを追加する必要があります。これにより、適切なソリューションが見つかるまで、自分自身や他の人が私たちの反応を洗練させることができます。 –