撰寫資料庫應用程式時,透過 SQL 陳述式動態建立、修改資料庫及其物件,能大幅提升開發彈性。本文示範如何運用 Visual C# 動態操作 SQL Server,涵蓋建立資料庫、資料表、預存程序、檢視、索引等物件,以及動態修改資料表結構、從各物件讀取資料並繫結至資料控制項。
資料庫操作常聚焦於 SELECT、INSERT、UPDATE、DELETE 等 DML 指令,但本文重點在 DDL(資料定義語言)層面:資料庫與物件的建立、修改、刪除。掌握這些基礎技法,即能靈活開發資料庫應用程式。
範例程式包含 10 個按鈕與 1 個 DataGrid 控制項,按鈕分三類:
DataGrid 用於顯示查詢結果。
.NET Framework 提供兩類資料提供者:
System.Data.SqlClient)System.Data.OleDb)本範例針對 SQL Server,故採用 SqlClient。程式開頭引用:
using System.Data.SqlClient;
string sql = "CREATE DATABASE MyDB ON PRIMARY "
+ "(NAME = MyDB_Data, FILENAME = 'C:\\MyDB.mdf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 10%) "
+ "LOG ON (NAME = MyDB_Log, FILENAME = 'C:\\MyDB.ldf', SIZE = 1MB, MAXSIZE = 50MB, FILEGROWTH = 10%)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
string sql = "CREATE TABLE Users (ID int IDENTITY(1,1) PRIMARY KEY, "
+ "Name nvarchar(50) NOT NULL, Email nvarchar(100))";
// 新增欄位
"ALTER TABLE Users ADD Phone nvarchar(20)"
// 修改欄位型別
"ALTER TABLE Users ALTER COLUMN Email nvarchar(200)"
// 刪除欄位
"ALTER TABLE Users DROP COLUMN Phone"
string sql = @"CREATE PROCEDURE GetUsersByEmailDomain @Domain nvarchar(50) AS
SELECT * FROM Users WHERE Email LIKE '%' + @Domain";
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Users", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGrid1.DataSource = dt;
掌握 C# 動態執行 DDL 的技法,能建構極具彈性的資料庫應用,無論是安裝精靈、多租戶架構的結構隔離,或是自動化部署管線,都是核心關鍵能力。