using System; using System.Collections.Generic; using System.Text; using SW.Henu.DAO; using System.Data; namespace LogisManageLibrary { /// <summary> /// 所有操作表类的抽象基类 /// </summary> public abstract class AManage { /// <summary> /// 对应表的字段名称列表 /// </summary> public List<string> attributeList { set; get; } /// <summary> /// 对应表的字段名称列表 /// </summary> public List<string> valueList { set; get; } /// <summary> /// 对应的表名 /// </summary> public string tableName { set; get; } // 声明委托 public delegate StringBuilder SetSQLBySelf(); /// <summary> /// 初始化字段列表 /// </summary> public AManage() { attributeList = new List<string>(); valueList = new List<string>(); } /// <summary> /// 初始化表和字段的信息,绑定数据表的定义结构 /// </summary> /// <example>tableName="Table";attributeList.Add("Field");</example> public abstract void Initialize(); /// <summary> /// 求解查询语句 /// </summary> /// <returns>返回查询表</returns> /// <example>string ps_Sql = "select Guid,SimpName as 客户简称,[Name] as 客户名称,LinkMan as 联系人,Telephone as 电话,Fax as 传真,Address as 地址,Zip as 邮编,SellType as 销售类别,ProductName as 产品名称,Remark as 备注,Case when IsEnable=1 then '停用' when IsEnable=0 then '可用' end as 是否可用 from Client ";</example> public abstract StringBuilder SetSelectSQL(); /// <summary> /// 求解插入的SQL语句 /// </summary> /// <returns></returns> /// <example>strSql.Append("insert into [Client](");</example> public abstract StringBuilder SetInsertSQL(); /// <summary> /// 求解更新的SQL语句 /// </summary> /// <returns></returns> /// <example>strSql.Append("update Client set ");</example> public abstract StringBuilder SetUpdateSQL(); /// <summary> /// 求解删除的SQL语句 /// </summary> /// <returns></returns> /// <example>string ps_Sql = "delete from Client where Guid='" + ClientGuid + "'";</example> public abstract StringBuilder SetDeleteSQL(); /// <summary> /// 通过pSql得到当前是新增状态还是修改状态 /// </summary> /// <param name="pObj">信息集实例</param> /// <param name="pSql">string pSql = "";pSql = "SELECT Guid FROM Client " +"where Guid ='" + pObj.Guid + "'";</param> /// <returns>返回True或False</returns> private bool SaveStatus(string pSql) { CommonInterface pComm = CommonFactory.CreateInstance(CommonData.sql); try { DataTable pDT = pComm.ExeForDtl(pSql); pComm.Close(); if (pDT.Rows.Count > 0) { return true; } else { return false; } } catch (Exception e) { pComm.Close(); throw e; } } /// <summary> /// 保存数据 /// </summary> /// <param name="pObj">信息集实体类</param> /// <param name="pSql">string pSql = "";pSql = "SELECT Guid FROM Client " +"where Guid ='" + pObj.Guid + "'";</param> /// <returns>返回保存成功(true)或失败(false)</returns> public bool Save(string pSql) { try { if (SaveStatus(pSql) == false) { return Insert(); } else { return Update(); } } catch (Exception e) { throw e; } } /// <summary> /// 得到数据 /// </summary> /// <returns></returns> public DataTable Select() { CommonInterface pObj_Comm = CommonFactory.CreateInstance(CommonData.sql); try { DataTable pDTMain = pObj_Comm.ExeForDtl(SetSelectSQL().ToString()); pObj_Comm.Close(); return pDTMain; } catch (Exception e) { pObj_Comm.Close(); throw e; } } /// <summary> /// 增加一条数据 /// </summary> public bool Insert() { CommonInterface pComm = CommonFactory.CreateInstance(CommonData.sql); try { pComm.Execute(SetInsertSQL().ToString());//执行Sql语句无返回值 pComm.Close(); return true; } catch (System.Exception e) { pComm.Close(); throw e; } } /// <summary> /// 更新一条数据 /// </summary> public bool Update() { CommonInterface pComm = CommonFactory.CreateInstance(CommonData.sql); try { pComm.Execute(SetUpdateSQL().ToString());//执行Sql语句无返回值 pComm.Close(); return true; } catch (System.Exception e) { pComm.Close(); throw e; } } /// <summary> /// 删除 /// </summary> /// <returns></returns> public void Delete() { CommonInterface pObj_Comm = CommonFactory.CreateInstance(CommonData.sql); try { pObj_Comm.Execute(SetDeleteSQL().ToString()); pObj_Comm.Close(); } catch (Exception e) { pObj_Comm.Close(); throw e; } } /// <summary> /// 由参数的SQL语句增删改数据库 /// </summary> public void NotSelect(string pSql) { CommonInterface pObj_Comm = CommonFactory.CreateInstance(CommonData.sql); try { pObj_Comm.Execute(pSql); pObj_Comm.Close(); } catch (Exception e) { pObj_Comm.Close(); throw e; } } /// <summary> /// 得到数据 /// </summary> /// <returns></returns> public DataTable Select(string pSql) { CommonInterface pObj_Comm = CommonFactory.CreateInstance(CommonData.sql); try { DataTable pDTMain = pObj_Comm.ExeForDtl(pSql); pObj_Comm.Close(); return pDTMain; } catch (Exception e) { pObj_Comm.Close(); throw e; } } /// <summary> /// 通过委托得到数据 /// </summary> /// <returns></returns> public DataTable SelectBySelf(SetSQLBySelf sql) { CommonInterface pObj_Comm = CommonFactory.CreateInstance(CommonData.sql); try { DataTable pDTMain = pObj_Comm.ExeForDtl(sql().ToString()); pObj_Comm.Close(); return pDTMain; } catch (Exception e) { pObj_Comm.Close(); throw e; } } /// <summary> /// 由委托增删改数据库 /// </summary> public void NotSelect(SetSQLBySelf sql) { CommonInterface pObj_Comm = CommonFactory.CreateInstance(CommonData.sql); try { pObj_Comm.Execute(sql().ToString()); pObj_Comm.Close(); } catch (Exception e) { pObj_Comm.Close(); throw e; } } } }
这写代码定义了所有的增删改查功能,只需要重写方法,或者委托,或者直接调用写入SQL语句即可。
该代码写了三种查询方式。重写,委托和直接调用。具体怎么用我还没有事件,但是经过老师的测试,很好用。
和大家分享下。