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

C# 連接資料庫與更新資料完整實作教學

     編輯:關於C#

在 C# 開發中,資料庫操作是核心技能之一。資料庫操作大致可分為「查詢」與「更新」兩大類:查詢僅從資料庫取出資料供使用,而更新包含新增、刪除、修改,會實際異動資料庫的實體資料。本文承接前一篇查詢教學,詳細說明如何使用 OleDbCommand 物件執行更新操作,並透過完整範例示範增、刪、改功能的實作。

核心物件:OleDbCommand

執行更新操作的關鍵在於 OleDbCommand 物件,它代表要對資料來源執行的 SQL 陳述式或預存程序。主要屬性包括:

  • CommandText:設定命令文字(SQL 陳述式)
  • Connection:設定資料庫連線
  • CommandType:設定命令類型,預設為 SQL 文字

設定完成後,呼叫 ExecuteNonQuery() 方法即可執行更新語句。記憶技巧:「ExecuteNonQuery」拆解為「執行、非、查詢」,即代表執行更新操作,回傳影響的資料列數。

資料庫連線類別 ConnDb

為了複用連線邏輯,建立 ConnDb 類別封裝連線、查詢、更新與關閉連線功能:

public class ConnDb
{
    private OleDbConnection conn = null;

    public ConnDb()
    {
        if (conn == null)
        {
            conn = new OleDbConnection();
            conn.ConnectionString = "provider=sqloledb.1;data source=.;initial catalog=capucivar;user id=sa;pwd=";
        }
        if (conn.State == ConnectionState.Closed)
            conn.Open();
    }

    public DataSet Query(string sql)
    {
        DataSet ds = new DataSet();
        using (OleDbDataAdapter da = new OleDbDataAdapter(sql, conn))
            da.Fill(ds);
        CloseConn();
        return ds;
    }

    public int Update(string sql)
    {
        using (OleDbCommand cmd = new OleDbCommand(sql, conn))
        {
            cmd.CommandType = CommandType.Text;
            int affected = cmd.ExecuteNonQuery();
            CloseConn();
            return affected;
        }
    }

    public void CloseConn()
    {
        if (conn?.State == ConnectionState.Open)
            conn.Close();
    }
}

WinForms 介面與增刪改實作

使用 Visual Studio 建立簡單介面,包含文字方塊輸入帳號密碼、ListBox 顯示使用者清單、新增/刪除/修改按鈕。

新增使用者

private void btnAdd_Click(object sender, EventArgs e)
{
    string uname = txtUserName.Text;
    string upass = txtPassword.Text;
    string sql = string.Format("INSERT INTO users VALUES ('{0}','{1}')", uname, upass);
    
    int result = new ConnDb().Update(sql);
    MessageBox.Show(result > 0 ? "新增成功!" : "新增失敗!");
    RefreshList();
}

刪除使用者

private void btnDelete_Click(object sender, EventArgs e)
{
    string uname = lstUsers.Text;
    string sql = string.Format("DELETE FROM users WHERE username='{0}'", uname);
    
    int result = new ConnDb().Update(sql);
    MessageBox.Show(result > 0 ? "刪除成功!" : "刪除失敗!");
    RefreshList();
}

修改使用者

點選 ListBox 項目後開啟修改視窗,載入原資料,確認修改後執行 UPDATE:

// 修改視窗確認按鈕
private void btnConfirm_Click(object sender, EventArgs e)
{
    int uid = Convert.ToInt32(txtUid.Text);
    string uname = txtUserName.Text;
    string upass = txtPassword.Text;
    string sql = string.Format("UPDATE users SET username='{0}', userpass='{1}' WHERE uid={2}", uname, upass, uid);
    
    int result = new ConnDb().Update(sql);
    MessageBox.Show(result > 0 ? "修改成功!" : "修改失敗!");
    if (result > 0) this.Visible = false;
}

資料重新整理

每次異動資料後,呼叫 RefreshList() 重新查詢並繫結 ListBox:

public void RefreshList()
{
    DataSet ds = new ConnDb().Query("SELECT * FROM users");
    lstUsers.DisplayMember = "username";
    lstUsers.DataSource = ds.Tables[0];
}

安全性提醒與改進方向

範例使用字串格式化拼接 SQL,實務上極易遭受 SQL Injection 攻擊。建議改用參數化查詢:

string sql = "INSERT INTO users (username, userpass) VALUES (@uname, @upass)";
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
    cmd.Parameters.AddWithValue("@uname", uname);
    cmd.Parameters.AddWithValue("@upass", upass);
    cmd.ExecuteNonQuery();
}

此外,連線字串應儲存於設定檔,避免硬編碼;生產環境請使用連線池與交易機制確保資料一致性。

總結

本文完整示範了 C# 使用 ADO.NET 進行資料庫連線、查詢與更新的基礎流程。掌握 OleDbConnection、OleDbCommand、ExecuteNonQuery 等核心類別與方法,並搭配 WinForms 介面事件處理,即可快速建立具備 CRUD 功能的桌面應用程式。後續可延伸學習 Entity Framework、Dapper 等 ORM 框架,提升開發效率與程式碼維護性。

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