时间:2021-07-01 10:21:17 帮助过:5人阅读
注意,上面的代码没有用到达梦的具体对象,而是使用了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开发框架实现支持国产达梦数据库的扩展操作
标签: