using System; using BP.Sys; using BP.Difference; namespace BP.DA { /// /// 参数 /// public class Para { #region 属性 public System.Data.DbType DAType = System.Data.DbType.String; public Oracle.ManagedDataAccess.Client.OracleDbType DATypeOfOra { get { switch (this.DAType) { case System.Data.DbType.String: case System.Data.DbType.Object: if (this.ItIsBigText) return Oracle.ManagedDataAccess.Client.OracleDbType.Clob; else return Oracle.ManagedDataAccess.Client.OracleDbType.Varchar2; case System.Data.DbType.Int32: case System.Data.DbType.Int16: return Oracle.ManagedDataAccess.Client.OracleDbType.Int16; case System.Data.DbType.Int64: return Oracle.ManagedDataAccess.Client.OracleDbType.Int64; case System.Data.DbType.Decimal: case System.Data.DbType.Double: return Oracle.ManagedDataAccess.Client.OracleDbType.Double; default: throw new Exception("没有涉及到的类型。typeof(obj)=" + this.DAType.ToString()); } } } public string ParaName = null; public int Size = 10; public Object val; /// /// 是否是大文本? /// public bool ItIsBigText = false; #endregion /// /// 参数 /// public Para() { } } /// /// 参数集合 /// public class Paras : System.Collections.CollectionBase { /// /// 要执行的SQL /// public string SQL = null; /// /// 获得SQL没有参数的 /// public string SQLNoPara { get { string mysql = this.SQL.Clone() as string; foreach (Para p in this) { if (p.DAType == System.Data.DbType.String) { if (mysql.Contains(BP.Difference.SystemConfig.AppCenterDBVarStr + p.ParaName + ",")) mysql = mysql.Replace(BP.Difference.SystemConfig.AppCenterDBVarStr + p.ParaName + ",", "'" + p.val.ToString() + "',"); else mysql = mysql.Replace(BP.Difference.SystemConfig.AppCenterDBVarStr + p.ParaName, "'" + p.val.ToString() + "'"); } else { if (mysql.Contains(BP.Difference.SystemConfig.AppCenterDBVarStr + p.ParaName + ",")) mysql = mysql.Replace(BP.Difference.SystemConfig.AppCenterDBVarStr + p.ParaName + ",", p.val.ToString() + ","); else mysql = mysql.Replace(BP.Difference.SystemConfig.AppCenterDBVarStr + p.ParaName, p.val.ToString()); } } return mysql; } } /// /// 构造参数 /// public Paras() { } /// /// 数据库连接标记 /// public string DBStr { get { return BP.Difference.SystemConfig.AppCenterDBVarStr; } } /// /// 增加参数 /// /// public void Add(Para para) { foreach (Para p in this) { if (p.ParaName == para.ParaName) { p.val = para.val; return; } } this.InnerList.Add(para); } /// /// 增加参数 /// /// public void Add(object obj) { this.Add("p", obj); } /// /// 增加参数 /// /// 参数名 /// 参数值 public void Add(string _name, object obj) { if (_name == "abc") return; if (obj == null) throw new Exception("@参数:" + _name + " 值无效."); foreach (Para p in this) { if (p.ParaName == _name) { p.val = obj; return; } } if (obj.GetType() == typeof(string)) { this.Add(_name, obj.ToString()); return; } if (obj.GetType() == typeof(int) || obj.GetType() == typeof(Int32) || obj.GetType() == typeof(Int16)) { this.Add(_name, Int32.Parse(obj.ToString())); return; } if (obj.GetType() == typeof(Int64)) { this.Add(_name, Int64.Parse(obj.ToString())); return; } if (obj.GetType() == typeof(float)) { this.Add(_name, float.Parse(obj.ToString())); return; } if (obj.GetType() == typeof(decimal)) { this.Add(_name, decimal.Parse(obj.ToString())); return; } if (obj.GetType() == typeof(double)) { this.Add(_name, double.Parse(obj.ToString())); return; } if (obj == DBNull.Value) this.AddDBNull(_name); else throw new Exception("@没有判断的参数类型:" + _name); } /// /// 是否是大块文本? /// /// 名称 /// 值 /// 是否是大文本? public void Add(string _name, string _val, bool isBigTxt = false) { Para en = new Para(); en.DAType = System.Data.DbType.String; en.val = _val; en.ParaName = _name; if (DataType.IsNullOrEmpty(_val) == true) en.Size = 0; else en.Size = _val.Length; en.ItIsBigText = isBigTxt; //是否是大块文本. this.Add(en); } /// /// 增加参数 /// /// 参数名 /// 值 public void Add(string _name, Int32 _val) { Para en = new Para(); en.DAType = System.Data.DbType.Int32; en.val = _val; en.ParaName = _name; this.Add(en); } /// /// 增加参数 /// /// 参数名 /// 值 public void Add(string _name, Int64 _val) { Para en = new Para(); en.DAType = System.Data.DbType.Int64; en.val = _val; en.ParaName = _name; this.Add(en); } /// /// 增加参数 /// /// 参数名 /// 值 public void Add(string _name, float _val) { Para en = new Para(); en.DAType = System.Data.DbType.Decimal; // en.DAType = System.Data.DbType.Int64; en.val = _val; en.ParaName = _name; this.Add(en); } /// /// 增加参数 /// /// 参数名 /// 值 public void AddDBNull(string _name) { Para en = new Para(); en.DAType = System.Data.DbType.Object; en.val = DBNull.Value; en.ParaName = _name; this.Add(en); } /// /// 增加参数 /// /// 参数名 /// 值 public void Add(string _name, decimal _val) { Para en = new Para(); en.DAType = System.Data.DbType.Decimal; en.val = _val; en.ParaName = _name; this.Add(en); } /// /// 增加参数 /// /// 参数名 /// 值 public void Add(string _name, double _val) { Para en = new Para(); en.DAType = System.Data.DbType.Decimal; en.val = _val; en.ParaName = _name; this.Add(en); } } }