linq 从数据库中获取字符串时出错与TagFile open mp3 c#一起使用

nbnkbykc  于 2023-05-04  发布在  C#
关注(0)|答案(1)|浏览(165)

在获得数据库中一个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);
                }

            }

Picture
我复制了一个路径,例如:C:\Users\ACER\Music\Ahxello - Frisbee.mp3
我已经尝试了很多方法,但它仍然不工作的项目.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.trackpath替换上面的固定字符串,但没有成功。
下面是我如何在数据库中输入路径:

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);
            }
klr1opcd

klr1opcd1#

我发现了错误,我的错误,这是真的,一个字符串在我的数据库,一些utf-8 mp3路径被注入到我的数据库,并导致它变成‘?'。我上面的代码工作正常。感谢所有帮助过我的人。

相关问题