歌手SQL改版(class 修改)

This commit is contained in:
jasonchenwork 2025-04-18 15:22:47 +08:00
parent 1cae6f9313
commit 925c886276
8 changed files with 37 additions and 47 deletions

View File

@ -3,31 +3,21 @@ namespace DBObj
// artist OOP test // artist OOP test
public class Artist public class Artist
{ {
public string Name { get; set; } public string Name { get; set; }
//public string Phonetic { get; set; }
//public string Category { get; set; }
//public int Strokes { get; set; }
public string Phonetic { get; set; } public Artist(string name)
public string Category { get; set; }
public int Strokes { get; set; }
public Artist(string name, string phonetic, string category, int strokes)
{ {
Name = name; Name = name;
Phonetic = phonetic;
Category = category;
Strokes = strokes;
} }
public override string ToString() public override string ToString()
{ {
return $"Name: {Name}, Phonetic: {Phonetic}, Category: {Category}, Strokes: {Strokes}"; //return $"Name: {Name}, Phonetic: {Phonetic}, Category: {Category}, Strokes: {Strokes}";
return $"Name: {Name}";
} }
} }
} }

View File

@ -1,5 +1,6 @@
using System.Data.SQLite; using System.Data.SQLite;
using System.IO; using System.IO;
using DualScreenDemo;
namespace DBObj namespace DBObj
{ {
/** /**
@ -29,6 +30,7 @@ namespace DBObj
} }
/*
private void LoadArtists() private void LoadArtists()
{ {
string databaseFileName = "KSongDatabase.db"; string databaseFileName = "KSongDatabase.db";
@ -87,16 +89,22 @@ namespace DBObj
} }
} }
*/
public List<Artist> GetArtistsByCategoryAndStrokeCountRange(string category, int minStrokes, int maxStrokes) public List<Artist> GetArtistsByCategoryAndStrokeCountRange(string category, int minStrokes, int maxStrokes)
{ {
if (category == "全部") if (category == "全部")
{ {
return AllArtists.Where(artist => artist.Strokes >= minStrokes && artist.Strokes <= maxStrokes).ToList(); string query = $"SELECT * FROM ArtistLibrary WHERE 歌手筆畫 >= {minStrokes} AND 歌手筆畫 <={maxStrokes}";
var searchResults = PrimaryForm.SearchSingers_Mysql(query);
return searchResults;
//return AllArtists.Where(artist => artist.Strokes >= minStrokes && artist.Strokes <= maxStrokes).ToList();
} }
else else
{ {
return AllArtists.Where(artist => artist.Category == category && artist.Strokes >= minStrokes && artist.Strokes <= maxStrokes).ToList(); string query = $"SELECT * FROM ArtistLibrary WHERE 歌手分類 = '{category}' AND 歌手筆畫 >= {minStrokes} AND 歌手筆畫 <={maxStrokes}";
var searchResults = PrimaryForm.SearchSingers_Mysql(query);
return searchResults;
//return AllArtists.Where(artist => artist.Category == category && artist.Strokes >= minStrokes && artist.Strokes <= maxStrokes).ToList();
} }
} }
} }

View File

@ -92,7 +92,7 @@ namespace DualScreenDemo{
return searchResults; return searchResults;
} }
public List<Artist> SearchSingers_Mysql(string query){ public static List<Artist> SearchSingers_Mysql(string query){
List<Artist> searchResults = new List<Artist>(); List<Artist> searchResults = new List<Artist>();
Console.WriteLine(query); Console.WriteLine(query);
string connectionString = "Server=192.168.11.4;Port=3306;Database=Karaoke-Kingpin;User=Karaoke-Kingpin;Password=ESM7yTPMnavFmbBH;"; string connectionString = "Server=192.168.11.4;Port=3306;Database=Karaoke-Kingpin;User=Karaoke-Kingpin;Password=ESM7yTPMnavFmbBH;";
@ -111,16 +111,8 @@ namespace DualScreenDemo{
{ {
while (reader.Read()) while (reader.Read())
{ {
string artist = reader["歌手姓名"].ToString(); string artist = reader["name"].ToString();
string phonetic = reader["歌手注音"].ToString(); searchResults.Add(new Artist(artist));
string category = reader["歌手分類"].ToString();
string strokesStr = reader["歌手筆畫"].ToString();
if (double.TryParse(strokesStr, out double strokesDouble))
{
int strokes = (int)Math.Round(strokesDouble);
searchResults.Add(new Artist(artist, phonetic, category, strokes));
}
} }
} }
} }
@ -205,8 +197,8 @@ namespace DualScreenDemo{
} }
return exists; return exists;
} }
private int countforSearch = 0; private static int countforSearch = 0;
private void writeLogforSearchTime(long elapsedMs){ private static void writeLogforSearchTime(long elapsedMs){
countforSearch++; countforSearch++;
@ -214,6 +206,8 @@ namespace DualScreenDemo{
string data = $"{countforSearch}, {elapsedMs} " + Environment.NewLine; string data = $"{countforSearch}, {elapsedMs} " + Environment.NewLine;
File.AppendAllText(logFilePath, data); File.AppendAllText(logFilePath, data);
} }
} }
} }

View File

@ -522,8 +522,8 @@ namespace DualScreenDemo
private void FindZhuYiSingers(){ private void FindZhuYiSingers(){
string searchText = inputBoxZhuYinSingers.Text; string searchText = inputBoxZhuYinSingers.Text;
string query = string.IsNullOrWhiteSpace(searchText) string query = string.IsNullOrWhiteSpace(searchText)
? "SELECT * FROM ArtistLibrary LIMIT 50;" ? "SELECT * FROM artists LIMIT 50;"
: $"SELECT * FROM ArtistLibrary WHERE `歌手注音` LIKE '{searchText}%';"; : $"SELECT * FROM artists WHERE `phonetic_abbr` LIKE '{searchText}%';";
//string query = $"SELECT * FROM ArtistLibrary WHERE `歌手注音` LIKE '{searchText}%' "; //string query = $"SELECT * FROM ArtistLibrary WHERE `歌手注音` LIKE '{searchText}%' ";
var searchResults = SearchSingers_Mysql(query); var searchResults = SearchSingers_Mysql(query);

View File

@ -272,8 +272,8 @@ namespace DualScreenDemo
private void FindEnglishSingers(){ private void FindEnglishSingers(){
string searchText = inputBoxEnglishSingers.Text; string searchText = inputBoxEnglishSingers.Text;
string query = string.IsNullOrWhiteSpace(searchText) string query = string.IsNullOrWhiteSpace(searchText)
? "SELECT * FROM ArtistLibrary LIMIT 50;" ? "SELECT * FROM artists LIMIT 50;"
: $"SELECT * FROM ArtistLibrary WHERE `歌手姓名` LIKE '{searchText}%';"; : $"SELECT * FROM artists WHERE `name` LIKE '{searchText}%';";
//string query = $"SELECT * FROM ArtistLibrary WHERE `歌手姓名` LIKE '{searchText}%' "; //string query = $"SELECT * FROM ArtistLibrary WHERE `歌手姓名` LIKE '{searchText}%' ";
var searchResults = SearchSingers_Mysql(query); var searchResults = SearchSingers_Mysql(query);

View File

@ -290,8 +290,8 @@ namespace DualScreenDemo
private void FindHandwritingSingers(){ private void FindHandwritingSingers(){
string searchText = handwritingInputBoxForSingers.Text; string searchText = handwritingInputBoxForSingers.Text;
string query = string.IsNullOrWhiteSpace(searchText) string query = string.IsNullOrWhiteSpace(searchText)
? "SELECT * FROM ArtistLibrary LIMIT 50;" ? "SELECT * FROM artists LIMIT 50;"
: $"SELECT * FROM ArtistLibrary WHERE `歌手姓名` LIKE '{searchText}%';"; : $"SELECT * FROM artists WHERE `name` LIKE '{searchText}%';";
//string query = $"SELECT * FROM ArtistLibrary WHERE `歌手姓名` LIKE '{searchText}%' "; //string query = $"SELECT * FROM ArtistLibrary WHERE `歌手姓名` LIKE '{searchText}%' ";
var searchResults = SearchSingers_Mysql(query); var searchResults = SearchSingers_Mysql(query);

View File

@ -176,19 +176,17 @@ namespace DualScreenDemo
// 在這裡添加搜尋歌曲的邏輯 // 在這裡添加搜尋歌曲的邏輯
// 例如:根據輸入框的內容搜尋歌曲 // 例如:根據輸入框的內容搜尋歌曲
string query = string.IsNullOrWhiteSpace(searchText) string query = string.IsNullOrWhiteSpace(searchText)
? "SELECT * FROM SongLibrary ORDER BY `點播次數` DESC LIMIT 200;" ? "SELECT * FROM artists; LIMIT 50"
: $"SELECT * FROM SongLibrary WHERE `歌星A拼音` LIKE '{searchText}%' OR `歌星B拼音` LIKE '{searchText}%' "; : $"SELECT * FROM artists WHERE `pinyin_abbr` LIKE '{searchText}%' ";
//string query = $"SELECT * FROM SongLibrary WHERE `歌星A拼音` LIKE '{searchText}%' OR `歌星B拼音` LIKE '{searchText}%' "; //string query = $"SELECT * FROM SongLibrary WHERE `歌星A拼音` LIKE '{searchText}%' OR `歌星B拼音` LIKE '{searchText}%' ";
var searchResults = SearchSongs_Mysql(query); var searchResults = SearchSingers_Mysql(query);
// 重置分頁 // 重置分頁
currentPage = 0; currentPage = 0;
currentSongList = searchResults; currentArtistList = searchResults;
totalPages = (int)Math.Ceiling((double)searchResults.Count / itemsPerPage); totalPages = (int)Math.Ceiling((double)searchResults.Count / itemsPerPage);
// 更新多頁面面板的內容
multiPagePanel.currentPageIndex = 0; multiPagePanel.currentPageIndex = 0;
multiPagePanel.LoadSongs(currentSongList); multiPagePanel.LoadSingers(currentArtistList);
} }

View File

@ -541,7 +541,7 @@ namespace DualScreenDemo
if (int.TryParse(searchText, out int length)) if (int.TryParse(searchText, out int length))
{ {
//var searchResults = allArtists.Where(artist => artist.Name.Length == length).ToList(); //var searchResults = allArtists.Where(artist => artist.Name.Length == length).ToList();
string query = $"SELECT * FROM ArtistLibrary WHERE CHAR_LENGTH(歌手姓名) = {length} "; string query = $"SELECT * FROM artists WHERE CHAR_LENGTH(name) = {length} ";
var searchResults = SearchSingers_Mysql(query); var searchResults = SearchSingers_Mysql(query);
// 設定當前頁數為 0並加載搜索結果 // 設定當前頁數為 0並加載搜索結果
currentPage = 0; currentPage = 0;