diff --git a/PrimaryFormParts/LanguageSearch/PrimaryForm.LanguageSearch.cs b/PrimaryFormParts/LanguageSearch/PrimaryForm.LanguageSearch.cs index 4594779..f9486a1 100644 --- a/PrimaryFormParts/LanguageSearch/PrimaryForm.LanguageSearch.cs +++ b/PrimaryFormParts/LanguageSearch/PrimaryForm.LanguageSearch.cs @@ -1,3 +1,8 @@ +using DBObj; +using MySqlConnector; +using System.Globalization; +using System.IO; + namespace DualScreenDemo { public partial class PrimaryForm @@ -42,6 +47,8 @@ namespace DualScreenDemo private Button keYuButton; private Bitmap keYuNormalBackground; private Bitmap keYuActiveBackground; + + // 語別查詢 query LIMIT 100 可更改 private void LanguageSongSelectionButton_Click(object sender, EventArgs e) { @@ -66,9 +73,8 @@ namespace DualScreenDemo hanYuButton.BackgroundImage = hanYuNormalBackground; keYuButton.BackgroundImage = keYuNormalBackground; - guoYuSongs = allSongs.Where(song => song.Category == "國語") - .OrderByDescending(song => song.Plays) - .ToList(); + string query = $"SELECT * FROM SongLibrary WHERE `語別` = '國語' ORDER BY `點播次數` DESC LIMIT 100;"; + var guoYuSongs = SearchSongs_Mysql(query); currentPage = 0; currentSongList = guoYuSongs; totalPages = (int)Math.Ceiling((double)guoYuSongs.Count / itemsPerPage); @@ -115,11 +121,11 @@ namespace DualScreenDemo activeButton.BackgroundImage = activeBackground; - - - var selectedSongs = allSongs.Where(song => song.Category == category) + string query = $"SELECT * FROM SongLibrary WHERE `語別` = '{category}' ORDER BY `點播次數` DESC LIMIT 100;"; + var selectedSongs = SearchSongs_Mysql(query); + /*var selectedSongs = allSongs.Where(song => song.Category == category) .OrderByDescending(song => song.Plays) - .ToList(); + .ToList();*/ currentPage = 0; currentSongList = selectedSongs; totalPages = (int)Math.Ceiling((double)selectedSongs.Count / itemsPerPage); diff --git a/PrimaryFormParts/PrimaryForm.SQLSearch.cs b/PrimaryFormParts/PrimaryForm.SQLSearch.cs new file mode 100644 index 0000000..904c84a --- /dev/null +++ b/PrimaryFormParts/PrimaryForm.SQLSearch.cs @@ -0,0 +1,87 @@ +using MySqlConnector; +using DBObj; +using System.Globalization; +using System.IO; +namespace DualScreenDemo{ + public partial class PrimaryForm + { + public List SearchSongs_Mysql(string query) + { + List searchResults = new List(); + Console.WriteLine(query); + string connectionString = "Server=192.168.22.170;Port=3306;Database=Karaoke-Kingpin;User=Karaoke-Kingpin;Password=ESM7yTPMnavFmbBH;"; + + using (var connection = new MySqlConnection(connectionString)) + { + connection.Open(); + Console.WriteLine("MyDB 連線成功!"); + + using (var command = new MySqlCommand(query, connection)) + { + + using (var reader = command.ExecuteReader()) + { + while (reader.Read()) + { + string songNumber = reader["歌曲編號"].ToString(); + string category = reader["語別"].ToString(); + string song = reader["歌曲名稱"].ToString(); + int plays = Convert.ToInt32(reader["點播次數"]); + string artistA = reader["歌星 A"].ToString(); + string artistB = reader["歌星 B"].ToString(); + string artistACategory = reader["歌星A分類"].ToString(); + string artistBCategory = reader["歌星B分類"].ToString(); + string dateValue = reader["新增日期"]?.ToString() ?? ""; + DateTime addedTime; + try + { + addedTime = DateTime.Parse(dateValue, CultureInfo.InvariantCulture).Date; + } + catch + { + addedTime = DateTime.Today; + } + + string basePathHost1 = reader["路徑 1"].ToString(); + string basePathHost2 = reader["路徑 2"].ToString(); + string fileName = reader["歌曲檔名"].ToString(); + string songFilePathHost1 = Path.Combine(basePathHost1, fileName); + string songFilePathHost2 = Path.Combine(basePathHost2, fileName); + string phoneticNotation = reader["歌曲注音"].ToString(); + string pinyinNotation = reader["歌曲拼音"].ToString(); + string artistAPhonetic = reader["歌星A注音"].ToString(); + string artistBPhonetic = reader["歌星B注音"].ToString(); + string artistASimplified = reader["歌星A簡體"].ToString(); + string artistBSimplified = reader["歌星B簡體"].ToString(); + string songSimplified = reader["歌名簡體"].ToString(); + string songGenre = reader["分類"].ToString(); + string artistAPinyin = reader["歌星A拼音"].ToString(); + string artistBPinyin = reader["歌星B拼音"].ToString(); + int humanVoice = Convert.ToInt32(reader["人聲"]); + + searchResults.Add(new SongData( + songNumber, category, song, plays, artistA, artistB, + artistACategory, artistBCategory, addedTime, + songFilePathHost1, songFilePathHost2, + phoneticNotation, pinyinNotation, + artistAPhonetic, artistBPhonetic, + artistASimplified, artistBSimplified, + songSimplified, songGenre, + artistAPinyin, artistBPinyin, + humanVoice + )); + } + } + } + + connection.Close(); + Console.WriteLine("MyDB 連線已關閉!"); + } + + return searchResults; + } + + + } + +} \ No newline at end of file diff --git a/PrimaryFormParts/PrimaryForm.cs b/PrimaryFormParts/PrimaryForm.cs index cae117f..c4c7a08 100644 --- a/PrimaryFormParts/PrimaryForm.cs +++ b/PrimaryFormParts/PrimaryForm.cs @@ -3489,7 +3489,7 @@ public class MultiPagePanel : Panel { try { - string filePath = Path.Combine(Application.StartupPath, "ButtonImages", imageName); + string filePath = Path.Combine(Application.StartupPath, "themes", "superstar", "ButtonImages", imageName); if (File.Exists(filePath)) { return Image.FromFile(filePath); diff --git a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.cs b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.cs index 3d56af5..ac4defc 100644 --- a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.cs +++ b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.cs @@ -143,82 +143,5 @@ namespace DualScreenDemo 1214, 544, 209, 58, ref numberSearchSongNormalBackground, ref numberSearchSongActiveBackground, normalStateImageSongQuery, mouseDownImageSongQuery, SongIDSearchSongsButton_Click); } - public List SearchSongs_Mysql(string query) - { - List searchResults = new List(); - Console.WriteLine(query); - string connectionString = "Server=192.168.22.170;Port=3306;Database=Karaoke-Kingpin;User=Karaoke-Kingpin;Password=ESM7yTPMnavFmbBH;"; - - using (var connection = new MySqlConnection(connectionString)) - { - connection.Open(); - Console.WriteLine("MyDB 連線成功!"); - - using (var command = new MySqlCommand(query, connection)) - { - - using (var reader = command.ExecuteReader()) - { - while (reader.Read()) - { - string songNumber = reader["歌曲編號"].ToString(); - string category = reader["語別"].ToString(); - string song = reader["歌曲名稱"].ToString(); - int plays = Convert.ToInt32(reader["點播次數"]); - string artistA = reader["歌星 A"].ToString(); - string artistB = reader["歌星 B"].ToString(); - string artistACategory = reader["歌星A分類"].ToString(); - string artistBCategory = reader["歌星B分類"].ToString(); - string dateValue = reader["新增日期"]?.ToString() ?? ""; - DateTime addedTime; - try - { - addedTime = DateTime.Parse(dateValue, CultureInfo.InvariantCulture).Date; - } - catch - { - addedTime = DateTime.Today; - } - - string basePathHost1 = reader["路徑 1"].ToString(); - string basePathHost2 = reader["路徑 2"].ToString(); - string fileName = reader["歌曲檔名"].ToString(); - string songFilePathHost1 = Path.Combine(basePathHost1, fileName); - string songFilePathHost2 = Path.Combine(basePathHost2, fileName); - string phoneticNotation = reader["歌曲注音"].ToString(); - string pinyinNotation = reader["歌曲拼音"].ToString(); - string artistAPhonetic = reader["歌星A注音"].ToString(); - string artistBPhonetic = reader["歌星B注音"].ToString(); - string artistASimplified = reader["歌星A簡體"].ToString(); - string artistBSimplified = reader["歌星B簡體"].ToString(); - string songSimplified = reader["歌名簡體"].ToString(); - string songGenre = reader["分類"].ToString(); - string artistAPinyin = reader["歌星A拼音"].ToString(); - string artistBPinyin = reader["歌星B拼音"].ToString(); - int humanVoice = Convert.ToInt32(reader["人聲"]); - - searchResults.Add(new SongData( - songNumber, category, song, plays, artistA, artistB, - artistACategory, artistBCategory, addedTime, - songFilePathHost1, songFilePathHost2, - phoneticNotation, pinyinNotation, - artistAPhonetic, artistBPhonetic, - artistASimplified, artistBSimplified, - songSimplified, songGenre, - artistAPinyin, artistBPinyin, - humanVoice - )); - } - } - } - - connection.Close(); - Console.WriteLine("MyDB 連線已關閉!"); - } - - return searchResults; - } - - } }