C#應用程式開發:完成建立團隊表單 (第14課) (Tim Corey)
[[academy-video-youtube({"vid": "RBfY446QN_A", "start_time": "0", "title": "C# App Start To Finish Lesson 14 - Create Team Form Part 3", "creator": "Tim Corey", "length": "51m 15s"})]]
在 Tim Corey 的 C# From Start to Finish 課程中的這個影片課程中,Tim回到了Create Team表單,以完成最後的部分:Create Team按鈕。 Tim 解釋說,儘管大部分的表單已經連接好,但實際將團隊資料儲存到資料庫的按鈕仍然需要實現。
C#(發音為 'C#')是一種現代、物件導向的程式語言,由 Microsoft 在2000年作為 .NET framework 的一部分建立。 C# 廣泛用於構建各種型別的應用程式,包括 Windows 應用程式、網路服務等,使其成為企業開發人員的熱門選擇。
此課程深入探討如何構建 Windows Forms 應用程式、將其連接到 SQL 資料庫,並使用儲存過程實施 CRUD 操作。
Learning C# Fundamentals
掌握 C# 的基礎知識是任何開發者建構健壯、可擴展及高效能的 .NET 應用程式的基石。 作為一種物件導向語言,C# 賦予開發者建立各種解決方案的能力,從桌面應用程式和網頁應用程式到手機應用程式,甚至是遊戲開發。 這種多功能性使 C# 成為現代軟體開發中的首選,讓開發人員能夠在多個平台和技術中探索和創新。
.NET 生態系統提供一系列完整的程式庫和工具,以簡化 .NET 開發過程。 Visual Studio 突出為構建、除錯及部署 .NET 應用程式的主要整合開發環境(IDE),而 Visual Studio Code 則提供了一個輕量級、跨平台的程式碼編輯器,非常適合快速開發及輕鬆存取基本功能。 無論您針對的是 Windows、macOS 或 Linux,.NET Core framework 提供了跨平台支持,讓您的應用程式能夠在各種裝置及環境中無縫運行。
對於企業軟體及可擴展應用程式,C# 和 .NET 平台提供了高效能及可靠性。 使用 C# 的開發者可以利用 ASP.NET Core 構建現代、跨平台的網頁應用程式,以及 Razor Pages 來提供簡化的網頁開發體驗。 隨著 .NET MAUI 的推出,建構能夠在多個平台上運行的手機應用程式變得更加輕鬆,只需使用單一程式碼庫,使您的 .NET 項目能夠進一步擴展。
一位開發者可以利用C#的威力建立所有內容,從簡單的程式碼範例與控制台應用程式到複雜的企業級解決方案。 .NET 平台的定期更新帶來效能改進、新功能及增強安全性,確保您的應用程式與最新技術保持一致。 可供存取的大量程式庫和學習材料,包括教程、範例項目和程式碼範例,讓您可以輕鬆學習 C# 並迅速開始構建實際應用程式。 using C# 不僅可以減少錯誤,還可以提高程式碼質量,這要歸功於其強型別化和現代編程特性。 無論您對網頁開發、構建桌面應用程式還是探索手機及遊戲開發感興趣,C# 和 .NET framework 都提供了成功所需的工具、資源及效能來應對當今快節奏的軟體開發環境。 利用 C#,您可以自信地建立符合使用者和企業需求的可擴展且高效能的應用程式。
在編寫程式碼前理解資料庫結構
Tim 開始時強調在撰寫任何程式碼之前先瞭解資料庫設計的重要性。 他展示應用程式使用兩個主要的表:Teams和TeamMembers。 Teams 表只包含 TeamID 和 TeamName,而 TeamMembers 則儲存 TeamID 和 PersonID。
Tim 解釋資料插入的順序很重要,因為應用程式必須首先建立團隊,獲取其 ID,然後使用返回的 ID 向該團隊中新增成員。 該設置是 C# 資料存取層設計中的關鍵,確保應用程式保持一致和準確。
建立 SQL 儲存過程以插入團隊
為了正確地將資料插入到資料庫中,Tim 建立了兩個 SQL 儲存過程,這是資料庫編程和 SQL Server 開發中的一個常見最佳實踐。
SP_Teams_Insert
Tim 建立了一個接受團隊名稱並使用 SCOPE_IDENTITY() 輸出新團隊 ID 的儲存過程。 這種方法在 SQL Server 儲存過程中很常見,用於維護引用完整性。
INSERT INTO dbo.Teams (TeamName)
VALUES (@TeamName)
SELECT @Id = SCOPE_IDENTITY()SP_TeamMembers_Insert
接下來,Tim 建立了一個用於插入團隊成員的儲存過程。 它接收 TeamID 和 PersonID 並輸出新記錄的 ID。
INSERT INTO dbo.TeamMembers (TeamID, PersonID)
VALUES (@TeamID, @PersonID)
SELECT @Id = SCOPE_IDENTITY()Tim 警告不要複製和修改 SQL 程式碼,因為細微的錯誤可能導致重大問題,這是資料庫開發人員的一個重要提示。
CreateTeam 應該是一個方法還是兩個?
然後 Tim 提出了設計決策:應該由一個方法還是兩個單獨的方法來處理建立團隊和新增團隊成員? 他提到了單一職責原則(SRP),但指出此過程代表著一個交易:建立團隊並分配成員。
Tim 得出結論,把它們結合在一起可以防止建立團隊卻不新增成員,從而導致資料不完整的情況。 這種設計決策在軟體架構中是基本的,尤其是在開發C#企業應用程式時。 由於其安全性、可擴展性和可維護性,C# 在企業軟體開發中被廣泛使用。
在資料連接介面中實現 CreateTeam
Tim 為資料連接介面新增了一個新方法:
TeamModel CreateTeam(TeamModel model);他確保 SQL 連接器和文字連接器都實現了此方法,展示了在 C# 中正確使用接口和清潔架構。 在 C# 應用程式開發中使用接口和清潔架構的好處包括提高程式碼可維護性、增加測試的便利性以及在適應新需求時提供更大的靈活性。
SQL連接器實現:插入團隊和成員
Tim 通過複製現有模式來構建 SQL 邏輯。 他執行以下操作:
插入團隊名稱並檢索 TeamID。
- 迴圈遍歷每個成員並插入到 TeamMembers 中。
他指出 PersonModel 已經包含了 PersonID,因此新增團隊成員非常簡單。 這是一個資料綁定和關聯資料庫操作的實用範例。
在 Windows Forms 中調整 Create Team 按鈕
在表單程式碼中,Tim建立了一個 TeamModel 物件並設置了其屬性:
TeamModel t = new TeamModel();
t.TeamName = teamNameValue.Text;
t.TeamMembers = selectedTeamMembers;
t = GlobalConfig.Connection.CreateTeam(t);這展示了 Windows Forms 事件處理及如何將資料從使用者介面 (UI) 傳遞到資料存取層,以確保流暢的使用者體驗。
Tim 指出,在建立了團隊之後,表單可以安全地關閉,因為團隊已經成功儲存。
測試 SQL 資料庫插入
Tim 通過建立一個團隊並驗證 SQL Server 中的記錄來測試表單。 他確認團隊已正確儲存於 Teams 中,成員也被儲存於 TeamMembers 中。 這是應用程式測試和驗證 CRUD 操作的一個關鍵步驟。
在文字文件儲存(文字連接器)中實現 CreateTeam
Tim 切換到文字文件儲存方法並解釋了挑戰:團隊模型包含一個 PersonModel 的清單,必須儲存為 CSV 格式。
他建立了一個格式,包含一個用管道分隔的個人 ID 清單:
1,Team Name,1|3|5這讓應用程式可以使用普通文字文件來儲存複雜資料結構—適用於小型應用程式中的基於文件的儲存。
將文字文件資料轉換為團隊物件
Tim 構建了 ConvertToTeamModels 方法以讀取 CSV 文件並重建 TeamModel 物件:
按逗號分隔每行
提取團隊 ID 和名稱
將最後一列按管道分隔(|)
在人員列表中查找每個個人 ID
- 將人員物件新增到團隊成員中
他選擇在找不到個人 ID 時拋出錯誤,以確保資料一致性。 這是在堅固的 C# 應用程式開發中的一種重要實踐。
使用管道分隔成員將團隊儲存回文件
Tim 建立了一個助手方法 ConvertPeopleListToString 來將團隊成員轉換為管道分隔的字串。 他解釋了需要使用以下方法刪除尾隨管道的需求:
output = output.Substring(0, output.Length - 1);他還增加了一個空清單的安全檢查以防止錯誤,這是一個實用的防禦性編程範例。
最終測試與完成
Tim 通過建立一個團隊並確認 CSV 文件的正確建立來測試基於文字的儲存。 他總結道 Create Team 表單已完成,並鼓勵觀眾繼續遵循將任務分解為更小步驟的模式。
Conclusion: Building a Complete C# Application
Tim 在他的影片中總結道,即便是複雜的 Windows Forms 特性也可以通過將工作分解為更小的部分和遵循一致的模式來完成。 他暗示下一個主要步驟是 Create Tournament 表單,這將讓應用程式接近完成。
此課程重點講述了 C# 應用開發中的關鍵概念,包括 Windows Forms 使用者介面、SQL 儲存過程、資料存取層、CRUD操作以及基於文件的儲存,所有這些都通過 Tim Corey 的教學風格得到清晰解釋。
開發人員常常利用 C# 來構建各種應用程式,包括網頁應用程式、後端 API、桌面軟體、移動應用程式和遊戲開發。 能夠在這些領域中使用 C# 展示了其多功能性和廣泛的適用性。
C# 擁有一個龐大的全球生態系統,並不斷通過新功能和效能改進進化。 它在各行業中仍然是一種可靠、現代化且高度需求的語言。

