首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# ADO.NET 建立資料表與基本 CRUD 操作速查

     編輯:關於C#

SQL Server 建表語法範例


CREATE TABLE [Products] (
    [Id] INT IDENTITY(1,1) PRIMARY KEY,
    [Name] NVARCHAR(100) NOT NULL,
    [Description] NTEXT NULL,
    [CreatedDate] DATETIME NOT NULL DEFAULT GETDATE(),
    [Price] MONEY NULL,
    [Stock] INT NOT NULL DEFAULT 0,
    [Rating] DECIMAL(3,2) NOT NULL DEFAULT 0,
    [Image] VARBINARY(MAX) NULL
);


常用 DDL 操作

操作SQL 範例
刪除資料表DROP TABLE [Products];
新增欄位ALTER TABLE [Products] ADD [CategoryId] INT NULL;
刪除欄位ALTER TABLE [Products] DROP COLUMN [CategoryId];
修改欄位ALTER TABLE [Products] ALTER COLUMN [Name] NVARCHAR(200) NOT NULL;
重命名資料表EXEC sp_rename 'Products', 'Items';
新增預設值ALTER TABLE [Products] ADD CONSTRAINT DF_Products_Stock DEFAULT 0 FOR [Stock];
刪除預設值ALTER TABLE [Products] DROP CONSTRAINT DF_Products_Stock;
新增檢查約束ALTER TABLE [Products] ADD CONSTRAINT CK_Products_Price CHECK ([Price] >= 0);
刪除約束ALTER TABLE [Products] DROP CONSTRAINT CK_Products_Price;

基本 CRUD 參數化查詢 (防 SQL Injection)


using (var conn = new SqlConnection(connStr))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    // INSERT
    cmd.CommandText = "INSERT INTO Products (Name, Price, Stock) VALUES (@Name, @Price, @Stock); SELECT SCOPE_IDENTITY();";
    cmd.Parameters.AddWithValue("@Name", "筆記型電腦");
    cmd.Parameters.AddWithValue("@Price", 25000m);
    cmd.Parameters.AddWithValue("@Stock", 10);
    int newId = Convert.ToInt32(cmd.ExecuteScalar());

    // SELECT
    cmd.CommandText = "SELECT Id, Name, Price FROM Products WHERE Stock > @MinStock";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@MinStock", 5);
    using (var reader = cmd.ExecuteReader())
        while (reader.Read()) Console.WriteLine($"{reader[0]}: {reader[1]} - {reader[2]:C}");

    // UPDATE
    cmd.CommandText = "UPDATE Products SET Price = @Price WHERE Id = @Id";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@Price", 23000m);
    cmd.Parameters.AddWithValue("@Id", newId);
    cmd.ExecuteNonQuery();

    // DELETE
    cmd.CommandText = "DELETE FROM Products WHERE Id = @Id";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@Id", newId);
    cmd.ExecuteNonQuery();
}

ADO.NET 核心物件速查

物件用途關鍵方法
SqlConnection資料庫連線Open(), Close(), State
SqlCommand執行 SQL/預存程序ExecuteReader(), ExecuteScalar(), ExecuteNonQuery()
SqlDataReader唯讀、前向資料流Read(), GetInt32(), GetString(), [ordinal]
SqlDataAdapter橋接 DataSet 與資料庫Fill(), Update()
DataSet / DataTable離線資料集Tables, Rows, Columns, AcceptChanges()
SqlParameter參數化查詢ParameterName, Value, SqlDbType, Direction

最佳實踐提醒

  1. 永遠使用參數化查詢,絕不拼接字串。
  2. using 區塊確保連線/命令/讀取器正確釋放。
  3. 連線字串存放於設定檔 (appsettings.json),勿硬編碼。
  4. 大量資料操作考慮 SqlBulkCopy 或 Table-Valued Parameters。
  5. 現代專案建議:使用 Entity Framework Core / Dapper 等 ORM/Micro-ORM,減少樣板碼、強型別、支援 LINQ、遷移管理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved