/// <summary> /// 执行sp /// </summary> /// <typeparam name="T"></typeparam> /// <param name="connstr"></param> /// <param name="spname"></param> /// <param name="isreturnds"></param> /// <param name="dbp"></param> /// <returns></returns> protected virtual UnitDataCollection ExcuteSP <T>(string connstr, string spname, bool isreturnds, DBOParameterCollection dbp) where T : ADBAccess, IResourceEntity { T dao = GetDao <T>(connstr, null); try { UnitDataCollection rtn = new UnitDataCollection(); DBDataCollection dbrtn = dao.ExcuteProcedure(ComFunc.nvl(spname), isreturnds, ref dbp); if (dbrtn.IsSuccess) { foreach (string s in dbrtn.Keys) { if (dbrtn[s] is DataSetStd) { rtn.QueryDatas = dbrtn.ReturnDataSet; } else { rtn.SetValue(s, dbrtn[s]); } } } return(rtn); } finally { dao.Close(); } }
public override DBDataCollection ExcuteProcedure(string sp_name, bool isReturnDataSet, ref DBOParameterCollection dbp) { DBDataCollection rtn = new DBDataCollection(); rtn.IsSuccess = false; DataSetStd ds = new DataSetStd(); NpgsqlCommand dc = null;//new SqlCommand(p.StoreProcureName, this.sqlconn); if (this._s == DBStatus.Begin_Trans) { dc = new NpgsqlCommand(sp_name, this.conn, this.tran); } else { dc = new NpgsqlCommand(sp_name, this.conn); } //dc.CommandTimeout = 90; dc.CommandType = CommandType.StoredProcedure; dc.CommandTimeout = CommandTimeOut; FillParametersToCommand(dc, dbp); NpgsqlDataReader ddr = null; try { if (isReturnDataSet) { ddr = dc.ExecuteReader(); ds = DataSetStd.FillData(ddr); rtn.ReturnDataSet = ds; } else { dc.ExecuteNonQuery(); } //獲取返回值 foreach (SqlParameter sp in dc.Parameters) { if (sp.Direction == ParameterDirection.Output || sp.Direction == ParameterDirection.InputOutput || sp.Direction == ParameterDirection.ReturnValue) { rtn.SetValue(sp.ParameterName.Replace(ParameterFlagChar, ""), sp.Value); } } rtn.IsSuccess = true; } finally { if (ddr != null) { ddr.Close(); ddr.Dispose(); } dc.Dispose(); dc = null; } return(rtn); }
public DataCollection DoOperate(ParameterStd p) { string flag = p.GetValue <string>("_unit_action_flag_"); UnitParameter up = (UnitParameter)p; T t = (T)Activator.CreateInstance(typeof(T), true); var sqlobj = t.GetSqlFunc(flag)(up); if (!(sqlobj is FrameDLRObject)) { throw new TypeRequiredException("需要的动态数据对象类型应该为FrameDLRObject"); } IDBAccessInfo dba = up.Dao; DBOParameterCollection dbc = up.SPParameter; UnitDataCollection rtn = new UnitDataCollection(); if (dba is ADBAccess) { bool isrturnds = sqlobj.isreturnds != null ? sqlobj.isreturnds : false; DBDataCollection dbrtn = ((ADBAccess)dba).ExcuteProcedure(ComFunc.nvl(sqlobj.spname), isrturnds, ref dbc); if (dbrtn.IsSuccess) { foreach (string s in dbrtn.Keys) { if (dbrtn[s] is DataSetStd) { rtn.QueryDatas = dbrtn.ReturnDataSet; } else { rtn.SetValue(s, dbrtn[s]); } } } } return(rtn); }