首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

C# 封裝 SQL Server 常用操作的資料存取類別庫

     編輯:關於SqlServer

類別結構

using System;
using System.Data;
using System.Data.SqlClient;

namespace Whgw_lc
{
    public class Data
    {
        // 連線字串 (建議從 config 讀取)
        protected static string ConnStr = "Data Source=10.68.19.203;Initial Catalog=Whgw;User ID=sa;Password=sc2000;";

        protected SqlConnection Conn;
        protected SqlDataAdapter Adapter;
        protected SqlCommand Cmd;
        protected SqlCommandBuilder CmdBuilder;
        protected DataSet Ds;
        protected DataRow Dr;
        protected SqlDataReader Reader;

        public Data()
        {
            Conn = new SqlConnection(ConnStr);
        }

        // 取得 DataSet
        public DataSet GetDataSet(string sql)
        {
            Ds = new DataSet();
            Adapter = new SqlDataAdapter(sql, Conn);
            Adapter.Fill(Ds);
            return Ds;
        }

        // 執行非查詢
        public int ExecuteNonQuery(string sql)
        {
            Cmd = new SqlCommand(sql, Conn);
            Conn.Open();
            int ret = Cmd.ExecuteNonQuery();
            Conn.Close();
            return ret;
        }

        // 參數化查詢範例
        public DataSet QueryWithParams(string sql, params SqlParameter[] parameters)
        {
            Ds = new DataSet();
            Cmd = new SqlCommand(sql, Conn);
            Cmd.Parameters.AddRange(parameters);
            Adapter = new SqlDataAdapter(Cmd);
            Adapter.Fill(Ds);
            return Ds;
        }

        // 可擴充:Transaction、BulkCopy、DataReader、StoredProcedure 等
    }
}

使用範例

var dal = new Data();
var ds = dal.GetDataSet("SELECT * FROM Users WHERE Status=1");
foreach (DataRow row in ds.Tables[0].Rows)
    Console.WriteLine(row["UserName"]);

// 參數化
var ds2 = dal.QueryWithParams("SELECT * FROM Orders WHERE CustID=@cid AND Date>=@dt",
    new SqlParameter("@cid", 1001),
    new SqlParameter("@dt", DateTime.Today.AddDays(-30)));

設計重點

  • 集中管理連線字串,支援設定檔注入。
  • 封裝 SqlDataAdapter/SqlCommandBuilder 便於 Update() 批次寫回。
  • 提供參數化方法預防 SQL Injection。
  • 實作 IDisposable 確保連線正確釋放(此處省略)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved