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

WinForm 與 ADO.NET 實戰(一):Connection、Command、DataReader 基礎入門

     編輯:關於.NET

ADO.NET 核心架構概覽

ADO.NET 是微軟推出的新一代資料存取技術,繼承自經典 ADO,專為 .NET Framework 設計,支援斷線式架構與高效能資料操作。本文將透過一個完整的 WinForm 範例,詳細講解三大核心物件:Connection、Command、DataReader 的實際應用。

核心物件詳解

Connection:資料庫連線通道

Connection 物件代表與資料來源的唯一連線。透過連線字串指定伺服器、資料庫、認證等資訊。常用方法:

  • Open():建立實體連線
  • Close():釋放連線資源

最佳實務:盡量縮短連線開啟時間,用完即關,或使用 using 區塊自動管理。

Command:執行 SQL 指令與預存程序

Command 封裝在資料來源上執行的 SQL 陳述式或預存程序。主要方法:

  • ExecuteNonQuery():執行 INSERT/UPDATE/DELETE,回傳影響筆數
  • ExecuteReader():執行 SELECT,回傳 DataReader 唯讀、順向資料流
  • ExecuteScalar():執行查詢,回傳第一筆第一欄的值(如 COUNT(*))

DataReader:高效能唯讀資料流

DataReader 提供快速、順向、唯讀的資料存取。不直接實例化,而是透過 Command.ExecuteReader() 取得。常用方法:

  • Read():移至下一筆記錄,無資料則回傳 false
  • GetValue(index):取得指定欄位值
  • Close():關閉 Reader,釋放連線

完整實作範例:用戶管理系統

1. 資料庫設計

建立 Users 表:ID(PK, Identity)、Username、Userpwd。

資料表結構

2. 資料庫連線基礎類

using System.Data.SqlClient;

public class DataBase
{
    // 連線字串:本機 SQL Server,資料庫 qq,sa/sa
    private SqlConnection conn = new SqlConnection(@"server=.;database=qq;uid=sa;pwd=sa");

    protected SqlConnection Conn
    {
        get { return conn; }
    }
}

3. 用戶業務邏輯類

public class Users : DataBase
{
    // 新增用戶
    public int Add(string name, string pwd)
    {
        string sql = "INSERT INTO Users (Username, Userpwd) VALUES ('" + name + "', '" + pwd + "')";
        Conn.Open();
        SqlCommand cmd = new SqlCommand(sql, Conn);
        int result = cmd.ExecuteNonQuery();
        Conn.Close();
        return result;
    }

    // 刪除用戶
    public int Delete(int id)
    {
        string sql = "DELETE FROM Users WHERE ID = " + id;
        Conn.Open();
        SqlCommand cmd = new SqlCommand(sql, Conn);
        int result = cmd.ExecuteNonQuery();
        Conn.Close();
        return result;
    }

    // 更新用戶
    public int Update(int id, string name, string pwd)
    {
        string sql = "UPDATE Users SET Username='" + name + "', Userpwd='" + pwd + "' WHERE ID=" + id;
        Conn.Open();
        SqlCommand cmd = new SqlCommand(sql, Conn);
        int result = cmd.ExecuteNonQuery();
        Conn.Close();
        return result;
    }

    // 取得所有用戶名稱列表(供 ComboBox 使用)
    public ArrayList GetUserList()
    {
        string sql = "SELECT Username FROM Users";
        ArrayList list = new ArrayList();
        SqlCommand cmd = new SqlCommand(sql, Conn);
        Conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            list.Add(dr.GetValue(0));
        }
        Conn.Close();
        return list;
    }
}

注意: 範例為教學示範,實際專案請務必使用參數化查詢防止 SQL Injection。

4. 表單程式碼

public partial class Form2 : Form
{
    private Users u = new Users();

    private void Form2_Load(object sender, EventArgs e)
    {
        // 載入用戶名稱至下拉選單
        foreach (string name in u.GetUserList())
        {
            comboBox1.Items.Add(name);
        }
    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        if (u.Add(txtName.Text, txtPwd.Text) > 0)
            MessageBox.Show("新增成功!");
        else
            MessageBox.Show("新增失敗,請聯繫管理員。");
    }
}

執行畫面

執行結果

總結與延伸

本文建立了 ADO.NET 連線式架構的基礎操作流程。下一篇將介紹斷線式架構的核心——DataAdapter、DataSet、DataTable,實現更靈活的資料綁定與離線操作。

本文出自「共享經驗」部落格,原文連結:https://jianle.blog.51cto.com/429692/107785

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved