获得数据库中mp3文件的路径后,我使用该路径创建了一个TagLib.File,但无法读取字符串。 我使用的数据库是 Microsoft SQL Server 2019。
using(var db= new KhangDuong())
{
var listTrack = db.Tracks.Where(x=>x.TrackID>1).ToList();
List<Track> track = new List<Track>();
track=listTrack;
foreach (var item in track)
{
TagLib.File tagFile = TagLib.File.Create(@item.Track_path);
AudioFileReader reader = new AudioFileReader(@item.Track_path);
TimeSpan duration = reader.TotalTime;
string artist = tagFile.Tag.Artists[0];
string album = tagFile.Tag.Album;
DAL_ListQueue create = new DAL_ListQueue();
create.createItem(floatLayout, item.TrackName, artist,album,duration.Minutes+":"+duration.Seconds);
}
}
我复制了一个路径,例如:
C:\Users\ACER\Music\Ahxello - Frisbee.mp3
我已经尝试了很多方法,但它仍然不适用于 item.Track_path 字符串,但是一个固定的字符串就可以了:
using(var db= new KhangDuong())
{
var listTrack = db.Tracks.Where(x=>x.TrackID>1).ToList();
List<Track> track = new List<Track>();
track=listTrack;
foreach (var item in track)
{
string path = @"C:\Users\ACER\Music\Ahxello - Frisbee.mp3";
TagLib.File tagFile = TagLib.File.Create(path);
AudioFileReader reader = new AudioFileReader(path);
TimeSpan duration = reader.TotalTime;
string artist = tagFile.Tag.Artists[0];
string album = tagFile.Tag.Album;
DAL_ListQueue create = new DAL_ListQueue();
create.createItem(floatLayout, item.TrackName, artist,album,duration.Minutes+":"+duration.Seconds);
}
}
我也尝试用 item.Track_path 替换上面的固定字符串,但是没有用。
以下是我将路径输入数据库的方式:
OpenFileDialog file = new OpenFileDialog();
file.Filter = "All Media Files|*.mp3;*.flac;*.m4a;";
file.Multiselect = true;
if (file.ShowDialog() == DialogResult.OK)
{
List<string> files = new List<string>();
files = file.FileNames.ToList();
BUS_Track.addTrack(files, KhangDataView);
}
我发现了错误,我的错误,确实是我数据库中的一个字符串,一些utf-8 mp3路径被注入到我的数据库中并导致它变成'?'。我上面的代码工作正常。感谢所有帮助过我的人