歌曲字數查詢SQL改版成功

This commit is contained in:
jasonchenwork 2025-04-08 15:51:48 +08:00
parent ed7527c5a5
commit 2dd399783a
3 changed files with 117 additions and 11 deletions

View File

@ -1,13 +1,11 @@
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Windows.Forms;
using System.Collections.Generic;
using IniParser;
using IniParser.Model;
using System.Text;
using DBObj;
/*
ZhuYinSingers -> WordCountSongs
ZhuYin -> WordCount
@ -541,6 +539,35 @@ namespace DualScreenDemo
wordCountSearchSongButton.BackgroundImage = wordCountSearchSongNormalBackground;
// 隱藏與 WordCount 歌手相關的所有按鈕
SetWordCountSongsAndButtonsVisibility(false);
// 錨點 歌曲查詢改版
FindWordCountSongs();
}
/// <summary>
/// 查詢歌曲(字數查詢),連接資料庫並執行 SQL 查詢。
/// </summary>
private void FindWordCountSongs(){
// 在這裡添加搜尋歌曲的邏輯
// 例如:根據輸入框的內容搜尋歌曲
string query = "SELECT * FROM SongLibrary WHERE CHAR_LENGTH(歌曲名稱) = @searchLength ";
string searchText = inputBoxWordCountSongs.Text;
if (int.TryParse(searchText, out int length))
{
query= $"SELECT * FROM SongLibrary WHERE CHAR_LENGTH(歌曲名稱) = {length} ";
}
else
{
// 處理輸入錯誤,例如顯示提示訊息
//MessageBox.Show("請輸入正確的數字!");
return;
}
List<SongData> searchResults = SearchSongs_Mysql(query);
// 重置分頁
currentPage = 0;
currentSongList = searchResults;
totalPages = (int)Math.Ceiling((double)searchResults.Count / itemsPerPage);
// 更新多頁面面板的內容
multiPagePanel.currentPageIndex = 0;
multiPagePanel.LoadSongs(currentSongList);
}
@ -608,7 +635,7 @@ namespace DualScreenDemo
ResizeAndPositionControl(inputBoxWordCountSongs, inputBoxWordCountCoords.X, inputBoxWordCountCoords.Y, inputBoxWordCountCoords.Width, inputBoxWordCountCoords.Height);
// 設定文本變更事件,當輸入框內容改變時觸發
inputBoxWordCountSongs.TextChanged += (sender, e) =>
/*inputBoxWordCountSongs.TextChanged += (sender, e) =>
{
string searchText = inputBoxWordCountSongs.Text; // 取得輸入內容
if (int.TryParse(searchText, out int length))
@ -629,7 +656,7 @@ namespace DualScreenDemo
}
};
};*/
// 將輸入框加入到窗體的控件集合中
this.Controls.Add(inputBoxWordCountSongs);
}

View File

@ -1,7 +1,7 @@
using System;
using System.Drawing;
using System.Windows.Forms;
using MySqlConnector;
using DBObj;
using System.Globalization;
using System.IO;
namespace DualScreenDemo
{
/*
@ -143,5 +143,83 @@ namespace DualScreenDemo
1214, 544, 209, 58, ref numberSearchSongNormalBackground, ref numberSearchSongActiveBackground,
normalStateImageSongQuery, mouseDownImageSongQuery, SongIDSearchSongsButton_Click);
}
public List<SongData> SearchSongs_Mysql(string query)
{
List<SongData> searchResults = new List<SongData>();
string connectionString = "Server=192.168.22.170;Port=3306;Database=Karaoke-Kingpin;User=Karaoke-Kingpin;Password=ESM7yTPMnavFmbBH;";
//string query = "SELECT * FROM SongLibrary WHERE CHAR_LENGTH(歌曲名稱) = @searchLength";
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;
}
}
}

View File

@ -14,6 +14,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MySqlConnector" Version="2.4.0" />
<PackageReference Include="System.IO.Ports" Version="9.0.3" />
</ItemGroup>
<ItemGroup>