当前位置:Gxlcms > 数据库问题 > 基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作

基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作

时间:2021-07-01 10:21:17 帮助过:5人阅读

<summary> /// 基于Enterprise Library类库的数据访问测试 /// </summary> public class EntLibDmHelper { public EntLibDmHelper() { } /// <summary> /// 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。 /// </summary> /// <param name="sql">SQL语句</param> /// <returns> /// 返回查询结果的所有记录的第一个字段,用逗号分隔。 /// </returns> public string SqlValueList(string sql) { Database db = DatabaseFactory.CreateDatabase(); DbCommand command = db.GetSqlStringCommand(sql); StringBuilder result = new StringBuilder(); using (IDataReader dr = db.ExecuteReader(command)) { while (dr.Read()) { result.AppendFormat("{0},", dr[0].ToString()); } } string strResult = result.ToString().Trim(,); return strResult; } /// <summary> /// 执行SQL查询语句,返回所有记录的DataTable集合。 /// </summary> /// <param name="sql">SQL查询语句</param> /// <returns></returns> public DataTable SqlTable(string sql) { DataSet ds = new DataSet(); Database db = DatabaseFactory.CreateDatabase(); DbCommand command = db.GetSqlStringCommand(sql); return db.ExecuteDataSet(command).Tables[0]; } }

注意,上面的代码没有用到达梦的具体对象,而是使用了Enterprise Library的Database等对象来操作,这样也就是非常方便我们进行接口的抽象处理,可以把更多的功能放到数据库访问抽象类里面了。

如果是利用达梦的.NET Provider的对象处理数据库,那么具体的代码应该是这样的。

        /// <summary>    
        /// 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。    
        /// </summary>    
        /// <param name="sql">SQL语句</param>    
        /// <returns>    
        /// 返回查询结果的所有记录的第一个字段,用逗号分隔。    
        /// </returns>    
        public string SqlValueList(string sql)
        {
            DmConnection connection = new DmConnection(ConnectionString);
            DmCommand cmd = new DmCommand(sql, connection);

            connection.Open();
            StringBuilder result = new StringBuilder();
            using (DmDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    result.AppendFormat("{0},", dr[0].ToString());
                }
            }

            string strResult = result.ToString().Trim(,);
            return strResult;
        }

        /// <summary>    
        /// 执行SQL查询语句,返回所有记录的DataTable集合。    
        /// </summary>    
        /// <param name="sql">SQL查询语句</param>    
        /// <returns></returns>    
        public DataTable SqlTable(string sql)
        {
            DataSet ds = new DataSet();
            DmDataAdapter adpater = new DmDataAdapter(sql, ConnectionString);
            adpater.Fill(ds);

            return ds.Tables[0];
        }

 

为了方便测试,我编写一个简单的查询例子来进行介绍,如下代码所示,这里我们主要利用了EntLibDmHelper这个辅助类对象,也就是基于Enterprise Library的扩展的处理操作。

        private void btnSearch_Click(object sender, EventArgs e)
        {
            BindData();
        }

        private void BindData()
        {
            string condition = "1=1 ";
            if (this.txtAuthor.Text.Length > 0)
            {
                condition += string.Format("AND Author like ‘%{0}%‘ ", this.txtAuthor.Text);
            }
            if (this.txtName.Text.Length > 0)
            {
                condition += string.Format("AND Name like ‘%{0}%‘ ", this.txtName.Text);
            }
            if (this.txtPublisher.Text.Length > 0)
            {
                condition += string.Format("AND Publisher like ‘%{0}%‘ ", this.txtPublisher.Text);
            }
            string sql = "Select * from PRODUCTION.Product Where " + condition;

            EntLibDmHelper helper = new EntLibDmHelper();
            //DMHelper helper = new DMHelper();
            DataTable dt = helper.SqlTable(sql);
            this.dataGridView1.DataSource = dt;

            sql = "Select count(*) from PRODUCTION.Product Where " + condition;
            string totalCount = helper.SqlValueList(sql);
            this.lblCount.Text = string.Format("共有数据:{0}条", totalCount);
        }

最后例子运行的界面效果如下所示。

技术分享

基本上印证了我们对框架的整合,实现了支持国产达梦数据库的扩展操作。剩下的就是我们模仿着把BaseDALSQL这样的基类,为达梦数据库增加一个个性化的数据库处理接口,就可以实现整体性框架的支持了。对于各个模块 的数据访问,我们需要增加一个DALDM这样的实现层,基类指向BaseDALDM这样就可以了。

 

基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作

标签:

人气教程排行