using System.Data; using DualScreenDemo; namespace DBObj { public class SQLManager { //private MyDB db = new MyDB(); public List FavoriteSongs { get; private set; } //public bool IsUserLoggedIn { get; set; } //public string UserPhoneNumber { get; set; } public SQLManager() { FavoriteSongs = new List(); } /* public void AddNewUser(string phoneNumber) { string databasePath = Path.Combine(Application.StartupPath, "db", databaseFileName); string connectionString = String.Format("Data Source={0};Version=3;", databasePath); using (var connection = new SQLiteConnection(connectionString)) { try { connection.Open(); string checkTableSql = "SELECT name FROM sqlite_master WHERE type='table' AND name='FavoriteSongs';"; using (var checkCommand = new SQLiteCommand(checkTableSql, connection)) { var result = checkCommand.ExecuteScalar(); if (result == null) { throw new Exception("Table 'FavoriteSongs' does not exist."); } } string sql = "INSERT INTO FavoriteSongs (PhoneNumber, SongNumber) VALUES (@PhoneNumber, @SongNumber)"; using (var command = new SQLiteCommand(sql, connection)) { command.Parameters.AddWithValue("@PhoneNumber", phoneNumber); command.Parameters.AddWithValue("@SongNumber", "000000"); command.ExecuteNonQuery(); } connection.Close(); } catch (Exception ex) { Console.WriteLine("Failed to add new user to SQLite database: " + ex.Message); } } } */ public List SearchNewSongs() { string query = $"SELECT * FROM song_library_cache WHERE language_name = '國語' ORDER BY add_date DESC LIMIT 1000;"; return select_Mysql(query); } public List SearchHotSongs() { string query = $"SELECT * FROM song_library_cache WHERE language_name = '國語' ORDER BY song_counts DESC LIMIT 1000;"; return select_Mysql(query); } public List SearchSongsBySinger(string keyword) { Console.WriteLine("keyword : " + keyword); var keywordLower = keyword.ToLower(); string query = $"SELECT * FROM song_library_cache WHERE artistA LIKE '%{keywordLower}%' OR artistB LIKE'%{keywordLower}%'ORDER BY song_counts DESC;"; return select_Mysql(query); } public List SearchSongsByName(string keyword) { //string query = $"SELECT * FROM song_library_cache WHERE LOWER(song_name) LIKE CONCAT('%', LOWER('{keyword}'), '%') ORDER BY song_name DESC;"; string query = $"SELECT * FROM song_library_cache WHERE song_name LIKE '%{keyword}%' ORDER BY song_name DESC;"; return select_Mysql(query); } public SongData SearchSongByNumber(string songNumber) { List searchResults = new List(); string query = $"SELECT * FROM song_library_cache WHERE song_id = '{songNumber}';"; using (var db = new MyDB()) { if (db.open(query, null)) { if (db.recordCount() != 0) { searchResults.Add(newSongData( db )); } } } return searchResults.FirstOrDefault(); } private List select_Mysql(string query) { List searchResults = new List(); Console.WriteLine(query); using (var db = new MyDB()) { if (db.open(query, null)) { while (db.Read()) { searchResults.Add(newSongData( db )); } } Console.WriteLine($"查詢到 {searchResults.Count} 筆資料。"); } return searchResults; } private SongData newSongData(MyDB db) { return new SongData( db.Field("song_id") ?? "", db.Field("song_name") ?? "", db.Field("artistA") ?? "", db.Field("artistB") ?? "", db.Field("song_filename") ?? "", db.Field("artistA_simplified") ?? "", db.Field("artistB_simplified") ?? "", db.Field("song_simplified")?? "", db.Field("vocal") ); } } }