點擊查看更多
點擊關閉

訪客計數

--- 次訪問

快速統計

15
專案
1
更新
1
活躍專案
3
已完成

本日名言

"你必須要理解你所追求的真實。"
— ???
返回專案列表
已完成 2024年6月 - 2024年6月

Wyrm 資料庫檢索工具

以 C# Windows Forms 開發的 MariaDB 資料庫管理工具,提供直覺的圖形化介面來執行 SQL 查詢、匯出 CSV 資料與管理 JSON 配置的資料庫連線。

wyrm-資料庫檢索工具
C# Database GUI SQL-Client School Project

專案簡介

Wyrm-DB GUI 是一個專為 MariaDB 資料庫查詢與管理設計的 Windows Form 應用程式,旨在為汽車公司資料庫系統提供直觀、易用的圖形化操作介面。本專案作為資料庫期末專案(DB_FinalProject)的延伸,將複雜的 SQL 查詢語句轉化為視覺化的使用者體驗,讓使用者無需深入了解 SQL 語法即可進行資料庫連線、查詢執行與結果匯出等操作。

核心理念

  • 使用者友善設計:簡化資料庫操作流程,降低技術門檻
  • 視覺化資料呈現:以 DataGridView 清晰展示查詢結果
  • 彈性查詢支援:支援自訂 SQL 查詢與範例資料庫快速測試
  • 安全性考量:敏感資料(OAuth 憑證、資料庫密碼)採用外部配置檔管理

我的職責

作為本專案的主要開發者之一,我與 吳傢澂 共同協作完成以下工作:

系統架構設計

  • 設計 Windows Forms 應用程式架構,實現 Model-View-Controller 分離
  • 建立 MariaDB 連線管理模組,處理連線生命週期與錯誤處理
  • 設計外部配置檔機制(JSON),分離敏感資料與程式碼

核心功能實作

  • 資料庫連線管理:實作 IP、Port、Database、Username、Password 驗證與連線建立
  • SQL 查詢執行引擎:支援單一查詢與批次查詢(程式列),處理查詢結果與錯誤訊息
  • 範例資料庫系統:從 UserConfigs/exampleDbConfig.json 載入預設連線資訊與範例查詢
  • 結果匯出功能:將 DataGridView 資料匯出為 CSV 格式
  • UI/UX 設計:實作按鈕淡入淡出動畫、狀態指示器、使用者手冊視窗

測試與維護

  • 測試與 DB_FinalProject 資料庫的整合(汽車公司資料庫架構)
  • 處理 MariaDB 常見錯誤(NU1301、401/403 認證錯誤)
  • 優化查詢效能與 UI 回應速度

核心功能

1. 資料庫連線管理

  • 連線參數驗證:檢查伺服器 IP 格式、端口範圍、必填欄位
  • 連線狀態指示:視覺化顯示連線成功/失敗狀態
  • 動態表格載入:連線成功後自動列出資料庫中的所有資料表

2. SQL 查詢執行

  • 互動式查詢介面
    • Enter 鍵:送出單一查詢
    • Shift + Enter:將查詢加入程式列
    • Alt + Enter:清空程式列與已儲存查詢
  • 批次查詢支援:程式列機制允許依序執行多個 SQL 語句
  • 結果視覺化:DataGridView 即時顯示查詢結果
  • 錯誤捕捉:捕捉並顯示 SQL 語法錯誤與執行錯誤訊息

3. 範例資料庫整合

  • 外部配置檔載入:從 UserConfigs/exampleDbConfig.json 讀取預設連線資訊

    {
      "Server": "your_server_ip",
      "Port": "your_port",
      "Database": "your_database",
      "User": "your_username",
      "Password": "your_password"
    }
    
  • 範例查詢預載:支援預定義的常用查詢語句快速測試

  • 安全性設計:配置檔不納入版本控制,保護敏感資訊

4. 資料匯出功能

  • CSV 格式匯出:將查詢結果匯出為逗號分隔值檔案
  • 自訂儲存路徑:使用者可選擇檔案名稱與儲存位置
  • 欄位標題保留:匯出時包含資料表欄位名稱

5. 使用者體驗優化

  • 動畫效果:按鈕淡入淡出效果提升互動體驗
  • 使用者手冊:內建說明視窗(模態/非模態可選)
  • 快捷鍵支援:常用操作提供鍵盤快捷鍵
  • 狀態回饋:即時顯示連線狀態、查詢進度

使用技術

核心框架

  • Windows Forms:.NET Framework 4.7.2 桌面應用程式框架
  • C#:主要開發語言
  • Visual Studio:整合開發環境

資料庫連線

  • MySql.Data (8.4.0):MariaDB/MySQL .NET Connector
  • ADO.NET:資料庫操作抽象層
  • System.Data:DataTable、DataGridView 資料處理

資料處理與序列化

  • Newtonsoft.Json (13.0.3):JSON 配置檔解析
  • System.Text.RegularExpressions:IP 位址與輸入驗證

UI 組件

  • DataGridView:查詢結果呈現
  • TextBox:SQL 查詢輸入
  • ToolStrip/MenuStrip:選單列與工具列
  • SaveFileDialog:CSV 匯出檔案選擇

依賴套件

  • BouncyCastle.Cryptography (2.4.0):加密支援
  • Google.Protobuf (3.27.1):序列化支援
  • K4os.Compression.LZ4 (1.3.8):資料壓縮

專案狀態

當前版本:v1.2.0(已發布)

  • 核心功能狀態:所有主要功能已完成並穩定運行
  • 整合測試:已與 DB_FinalProject 資料庫完整整合測試

功能完成度

  • 已完成
    • 資料庫連線與驗證機制
    • SQL 查詢執行與結果顯示
    • 範例資料庫配置系統
    • CSV 匯出功能
    • 使用者手冊與說明文件
    • UI/UX 動畫與互動設計
  • 🔄 計畫中(待辦事項):
    • 增加多語言支援(目前僅繁體中文介面)
    • 支援不同資料庫架構(目前針對汽車公司資料庫優化)
    • 支援更複雜的 SQL 查詢(如 JOIN、子查詢視覺化)
    • 新增更多資料庫操作(CREATE、UPDATE、DELETE 的 GUI 支援)

開發挑戰與收穫

1. MariaDB 連線穩定性管理

挑戰:如何處理網路中斷、連線逾時、資料庫伺服器無回應等異常情況?

解決方案

  • 實作完整的 try-catch 錯誤捕捉機制
  • 使用 MySqlConnection.State 檢查連線狀態
  • 提供視覺化的連線狀態指示(已連線/已斷線)
  • 連線失敗時提供明確的錯誤訊息與重試建議

收穫

  • 深入理解 ADO.NET 連線池管理
  • 學習資料庫連線生命週期管理
  • 掌握異常處理的最佳實踐

2. SQL 查詢結果動態綁定

挑戰:不同 SQL 查詢回傳的欄位數量與類型不固定,如何動態顯示於 DataGridView?

解決方案

  • 使用 DataTable 作為中間資料結構
  • 利用 MySqlDataAdapter.Fill() 自動填充 DataTable
  • DataGridView 自動根據 DataTable 架構調整欄位顯示
  • 處理 NULL 值與特殊字元顯示

收穫

  • 掌握 DataTable 與 DataGridView 的資料綁定機制
  • 學習泛型資料處理技巧
  • 理解資料庫結果集的動態處理

3. 敏感資料安全管理

挑戰:如何在不將資料庫密碼提交至 GitHub 的情況下,仍能支援範例資料庫功能?

解決方案

  • 設計外部 JSON 配置檔機制(exampleDbConfig.json
  • .gitignore 中排除配置檔
  • 提供 Example Database Usage.txt 說明文件指導使用者建立配置
  • 實作配置檔存在性檢查,未配置時停用範例資料庫按鈕

收穫

  • 學習應用程式配置管理最佳實踐
  • 理解敏感資料保護的重要性
  • 掌握 JSON 序列化與反序列化技術

4. 批次查詢程式列設計

挑戰:如何讓使用者能夠依序執行多個 SQL 查詢,並管理查詢歷史?

解決方案

  • 實作 Queue<string> 儲存查詢佇列
  • 使用 Stack<string> 管理查詢歷史
  • 提供快捷鍵組合(Enter、Shift+Enter、Alt+Enter)對應不同操作
  • 視覺化顯示目前程式列狀態

收穫

  • 掌握資料結構(Queue、Stack)在實務中的應用
  • 學習使用者操作流程設計
  • 理解鍵盤事件處理與快捷鍵實作

5. 協作開發與程式碼整合

挑戰:與協作者共同開發時,如何確保程式碼風格一致與功能不衝突?

解決方案

  • 使用 Git 進行版本控制與分支管理
  • 定期進行程式碼審查與整合測試
  • 建立清晰的開發文件與註解
  • 透過 GitHub Issues 追蹤任務與 Bug

收穫

  • 提升團隊協作能力
  • 學習程式碼審查與重構技巧
  • 理解軟體開發生命週期管理

應用程式執行截圖