ADO.NET 資料庫訪問對象封裝

來源:互聯網
上載者:User
ADO.net架構的優良使得,C#操作多數庫訪問異常方便,我們可以將驅動寫在連接字串裡,
利用 DbProviderFactory 擷取驅動的工廠,範例程式碼如下
/// <summary>/// 資料庫操作協助類,可處理CRUD 操作,和預存程序調用/// </summary>public class Dbutil{    private DbProviderFactory _factory;    private string _connectionString;    private string _connectioinName;    public string ConnectionName    {        get { return _connectioinName; }        set        {            _connectioinName = value;            _connectionString = ConfigurationManager.ConnectionStrings[value].ConnectionString;            _factory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings[value].ProviderName);        }    }    public Dbutil(string connName)    {        ConnectionName = connName;    }    public DataSet ExecuteDataSet(string sql, List<DbParameter> list)    {        using (DbConnection conn = _factory.CreateConnection())        using (DbCommand cmd = _factory.CreateCommand())        using (DbDataAdapter da = _factory.CreateDataAdapter())        {            conn.ConnectionString = _connectionString;            cmd.Connection = conn;            cmd.CommandType = CommandType.Text;            cmd.CommandText = sql;            da.SelectCommand = cmd;            foreach (DbParameter i in list)            {                cmd.Parameters.Add(i);            }                       using (DataSet ds = new DataSet())            {                conn.Open();                da.Fill(ds);                return ds;            }        }    }    public int ExecuteNonQuery(string sql)    {        using (DbConnection conn = _factory.CreateConnection())        using (DbCommand cmd = _factory.CreateCommand())        {            conn.ConnectionString = _connectionString;            cmd.Connection = conn;            cmd.CommandType = CommandType.Text;            cmd.CommandText = sql;            conn.Open();                       return cmd.ExecuteNonQuery();        }    }    public int ExecuteNonQuery(string sql, List<DbParameter> list)    {        using (DbConnection conn = _factory.CreateConnection())        using (DbCommand cmd = _factory.CreateCommand())        {            conn.ConnectionString = _connectionString;            cmd.Connection = conn;            cmd.CommandType = CommandType.Text;            cmd.CommandText = sql;            foreach (DbParameter i in list)            {                cmd.Parameters.Add(i);            }            conn.Open();            return cmd.ExecuteNonQuery();        }    }    public IEnumerable<object> ExecuteProcedure(string procedureName, List<DbParameter> list)    {        using (DbConnection conn = _factory.CreateConnection())        using (DbCommand cmd = _factory.CreateCommand())        {            conn.ConnectionString = _connectionString;            cmd.Connection = conn;            cmd.CommandType = CommandType.StoredProcedure;            cmd.CommandText = procedureName;            foreach (DbParameter i in list)            {                cmd.Parameters.Add(i);            }            conn.Open();            var res = cmd.ExecuteNonQuery();            yield return res;            foreach (DbParameter i in list)            {                if (i.Direction == ParameterDirection.Output)                    yield return i.Value;            }        }    }}

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.