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

.NET 呼叫 Access 預存程序完整範例

     編輯:C# 入門

Access 雖無 SQL Server 完善的預存程序支援,但可用「查詢」儲存參數化 SQL,配合 OleDbCommand 以 CommandType.StoredProcedure 呼叫,達到類似效果。本文示範刪除人員資料的完整流程。

資料存取層程式碼

public class Person
{
    private const string SP_DELETE = "[asp_Person_Delete]"; // Access 查詢名需方括號
    private const string PARAM_ID = "@PersonID";

    private OleDbParameter[] GetDeleteParams(int id)
    {
        return new OleDbParameter[] {
            new OleDbParameter(PARAM_ID, OleDbType.Integer) { Value = id }
        };
    }

    public bool Delete(int personID)
    {
        OleDbParameter[] pars = GetDeleteParams(personID);
        try
        {
            int affected = Utility.Tools.CreateOleDbCommandExecuteNonQuery(SP_DELETE, pars);
            return affected > 0;
        }
        catch { return false; }
    }
}

Access 建立參數化查詢(預存程序)步驟

  1. 開啟 Access → 「建立」→「查詢設計」→ 關閉資料表對話方塊
  2. 切換至「SQL 檢視」,輸入:
PARAMETERS [PersonID] Short;
DELETE * FROM PersonInfo WHERE [PersonInfo].[PersonID] = [PersonID];
  1. 儲存查詢,名稱設為 asp_Person_Delete(方括號會自動加上)

多參數查詢語法

PARAMETERS [ID] Short, [Name] Text(50), [BirthDate] DateTime;
INSERT INTO Table1 (ID, Name, BirthDate) VALUES ([ID], [Name], [BirthDate]);

呼叫端通用執行方法

public static int CreateOleDbCommandExecuteNonQuery(string spName, OleDbParameter[] parameters)
{
    using (OleDbConnection conn = new OleDbConnection(connString))
    using (OleDbCommand cmd = new OleDbCommand(spName, conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        if (parameters != null) cmd.Parameters.AddRange(parameters);
        conn.Open();
        return cmd.ExecuteNonQuery();
    }
}

注意事項

  • Access 查詢名稱在程式中必須用 [ ] 包圍(如 [asp_Person_Delete])。
  • 參數名稱需與查詢中 PARAMETERS 宣告一致(含 @ 前綴)。
  • Access 無查詢分析器,測試較麻煩,建議在 Access 中右鍵查詢選「開啟」手動輸入參數驗證。
  • 頻繁修改查詢時務必隨時儲存,避免遺失。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved