taglib-sharpとOleDbを使用して、音楽ファイルのフォルダーにインデックスを付け、そのファイルのすべてのメタデータをAccessデータベースに保存しようとしています(おそらく後でSQL Compactなどに切り替えますが、私が持っている本ではAccessを使用しています) 。以下のコードは、特定のフォルダーとサブフォルダーにある最初の1000ファイルのメタデータを取得して保存する必要があります
OleDbCommand cmd = con.CreateCommand();
DirSearch(@"C:\Users\Stephen\Music");
TagLib.File tagFil;
for (int i = 0; i < 1000; i++)
{
tagFil = TagLib.File.Create(filesFound[i]);
string album = tagFil.Tag.Album;
string artist = tagFil.Tag.FirstPerformer;
string title = tagFil.Tag.Title;
if (album == null)
album = "Unknown Album";
if (artist == null)
artist = "Unknown Artist";
if (title == null)
title = "Unknown Track";
cmd.CommandText = "INSERT INTO Track (Title,Artist,Album,Path) VALUES ('" + title + "','" + artist + "','" + album + "','" + filesFound[i] + "')";
cmd.ExecuteNonQuery();
}
ただし、この問題は、タグの1つにタイトルに角かっこが含まれている場合に発生します。これが問題を引き起こす理由はわかりますが、解決/回避する方法はわかりません。文字列リテラルなどを試しましたが、どのように機能するかわかりませんでした(:/ではありません)。より良いアイデアはありますか?