public void SetParameterValues(object _obj, DbParameter[] pars) { try { if (_obj == null) { throw new Exception("SetParameterValues:实体对象为空"); } if (pars == null) { throw new Exception("SetParameterValues:参数对象数组为空"); } for (int i = 0; i < pars.Length; i++) { for (int j = 0; j < _obj.GetType().GetProperties().Length; j++) { BindFieldAttribute anBindFieldAttributeByFieldName = this.GetAnBindFieldAttributeByFieldName(_obj, _obj.GetType().GetProperties()[j].Name); if ("@" + anBindFieldAttributeByFieldName.Name == pars[i].ParameterName) { pars[i].Value = _obj.GetType().GetProperties()[j].GetValue(_obj, null); break; } } } } catch (Exception ex) { throw ex; } }
public DbParameter CreateAnParameter(BindFieldAttribute _BindFieldAttribute) { DbParameter result; try { DbParameter dbParameter = null; if (_BindFieldAttribute == null) { throw new Exception("CreateAnParameter:对象BindFieldAttribute为空!"); } if (DS_SqlHelper.DbProviderName == "System.Data.OracleClient") { dbParameter = new OracleParameter { ParameterName = "@" + _BindFieldAttribute.Name, OracleType = (OracleType)this.GetDbType(_BindFieldAttribute.DbType, DS_SqlHelper.DbProviderName) }; } else if (DS_SqlHelper.DbProviderName == "System.Data.SqlClient") { dbParameter = new SqlParameter { ParameterName = "@" + _BindFieldAttribute.Name, SqlDbType = (SqlDbType)this.GetDbType(_BindFieldAttribute.DbType, DS_SqlHelper.DbProviderName) }; } result = dbParameter; } catch (Exception ex) { throw ex; } return(result); }
public string GetBindFields(object _obj, ORMWork.DataBaseOpTypes _DataBaseOpTypes) { string result; try { StringBuilder stringBuilder = new StringBuilder(); if (_obj == null) { throw new Exception("GetBindFields:实体对象为空!"); } for (int i = 0; i < _obj.GetType().GetProperties().Length; i++) { PropertyInfo propertyInfo = _obj.GetType().GetProperties()[i]; if (propertyInfo.GetCustomAttributes(true) == null || propertyInfo.GetCustomAttributes(true)[0] == null) { throw new Exception("GetBindFields:实体对象中属性没有映射到表中的列!"); } BindFieldAttribute bindFieldAttribute = propertyInfo.GetCustomAttributes(true)[0] as BindFieldAttribute; if (!(bindFieldAttribute.Name.Trim() == string.Empty)) { if (_DataBaseOpTypes != ORMWork.DataBaseOpTypes.Insert || (!(bindFieldAttribute.DefaultValue.ToUpper() == "SYS_GUID()") && !(bindFieldAttribute.DefaultValue.ToUpper() == "SYSDATE") && !(bindFieldAttribute.DefaultValue.ToLower() == "newid()") && !(bindFieldAttribute.DefaultValue.ToLower() == "getdate()"))) { if (ORMWork.DataBaseOpTypes.Update != _DataBaseOpTypes || (!bool.Parse(bindFieldAttribute.Key.ToString()) && !(bindFieldAttribute.Name.ToUpper() == "ID") && !(bindFieldAttribute.Name.ToUpper() == "INPUTEMPID") && !(bindFieldAttribute.Name.ToUpper() == "INPUTTIME"))) { if (ORMWork.DataBaseOpTypes.Delete != _DataBaseOpTypes) { if (stringBuilder.Length > 0) { stringBuilder.Append(","); } stringBuilder.Append(bindFieldAttribute.Name.Trim()); } } } } } result = stringBuilder.ToString(); } catch (Exception ex) { throw ex; } return(result); }
public BindFieldAttribute GetAnBindFieldAttributeByFieldName(object _obj, string _fieldname) { BindFieldAttribute result; try { BindFieldAttribute bindFieldAttribute = null; if (_obj == null) { throw new Exception("GetAnBindFieldAttributeByFieldName:实体对象为空!"); } if (_fieldname == string.Empty) { throw new Exception("GetAnBindFieldAttributeByFieldName:待查名称为空!"); } for (int i = 0; i < _obj.GetType().GetProperties().Length; i++) { if (!(_obj.GetType().GetProperties()[i].Name != _fieldname)) { PropertyInfo propertyInfo = _obj.GetType().GetProperties()[i]; if (propertyInfo.GetCustomAttributes(true) == null || propertyInfo.GetCustomAttributes(true)[0] == null) { throw new Exception("GetAnBindFieldAttributeByFieldName:实体对象中属性没有映射到表中的列!"); } BindFieldAttribute bindFieldAttribute2 = propertyInfo.GetCustomAttributes(true)[0] as BindFieldAttribute; bindFieldAttribute = bindFieldAttribute2; } } result = bindFieldAttribute; } catch (Exception ex) { throw ex; } return(result); }
public virtual object GetAnObject(object _hasidobj) { object result; try { if (_hasidobj == null) { throw new Exception("GetAnObject:实体对象为空"); } string bindTableName = this.GetBindTableName(_hasidobj); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(string.Format("SELECT * FROM {0}", bindTableName)); stringBuilder.Append(" WHERE "); stringBuilder.Append(" ID=@ID "); string text = stringBuilder.ToString(); DbParameter[] array = new DbParameter[] { this.CreateAnParameter(this.GetAnBindFieldAttributeByFieldName(_hasidobj, "ID")) }; this.SetParameterValues(_hasidobj, array); DataTable dataTable = DS_SqlHelper.ExecuteDataTable(text, array, CommandType.Text); if (dataTable == null || dataTable.Rows.Count == 0) { result = _hasidobj; } else { for (int i = 0; i < _hasidobj.GetType().GetProperties().Length; i++) { BindFieldAttribute anBindFieldAttributeByFieldName = this.GetAnBindFieldAttributeByFieldName(_hasidobj, _hasidobj.GetType().GetProperties()[i].Name); if (dataTable.Rows[0][anBindFieldAttributeByFieldName.Name] != null) { if (_hasidobj.GetType().GetProperties()[i].PropertyType.ToString().ToLower() == "System.DateTime".ToLower() && dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString() != "") { _hasidobj.GetType().GetProperties()[i].SetValue(_hasidobj, DateTime.Parse(dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString()), null); } else if (_hasidobj.GetType().GetProperties()[i].PropertyType.ToString().ToLower() == "System.Int16".ToLower() && dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString() != "") { _hasidobj.GetType().GetProperties()[i].SetValue(_hasidobj, short.Parse(dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString()), null); } else if (_hasidobj.GetType().GetProperties()[i].PropertyType.ToString().ToLower() == "System.Int32".ToLower() && dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString() != "") { _hasidobj.GetType().GetProperties()[i].SetValue(_hasidobj, int.Parse(dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString()), null); } else if (_hasidobj.GetType().GetProperties()[i].PropertyType.ToString().ToLower() == "System.Int64".ToLower() && dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString() != "") { _hasidobj.GetType().GetProperties()[i].SetValue(_hasidobj, long.Parse(dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString()), null); } else if (_hasidobj.GetType().GetProperties()[i].PropertyType.ToString().ToLower() == "System.Decimal".ToLower() && dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString() != "") { _hasidobj.GetType().GetProperties()[i].SetValue(_hasidobj, decimal.Parse(dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString()), null); } else if (_hasidobj.GetType().GetProperties()[i].PropertyType.ToString().ToLower() == "System.Double".ToLower() && dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString() != "") { _hasidobj.GetType().GetProperties()[i].SetValue(_hasidobj, double.Parse(dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString()), null); } else if (_hasidobj.GetType().GetProperties()[i].PropertyType.ToString().ToLower() == "System.Single".ToLower() && dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString() != "") { _hasidobj.GetType().GetProperties()[i].SetValue(_hasidobj, float.Parse(dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString()), null); } else if (dataTable.Rows[0][anBindFieldAttributeByFieldName.Name].ToString() != "") { _hasidobj.GetType().GetProperties()[i].SetValue(_hasidobj, dataTable.Rows[0][anBindFieldAttributeByFieldName.Name], null); } } } result = _hasidobj; } } catch (Exception ex) { throw ex; } return(result); }
public DbParameter[] CreateParameters(object _obj, ORMWork.DataBaseOpTypes _DataBaseOpTypes, out string _fieldpars, out string _where) { DbParameter[] result; try { _fieldpars = ""; _where = ""; string text = ""; List <DbParameter> list = new List <DbParameter>(); if (_obj == null) { throw new Exception("CreateParameters:实体对象为空"); } list.Clear(); for (int i = 0; i < _obj.GetType().GetProperties().Length; i++) { BindFieldAttribute anBindFieldAttributeByFieldName = this.GetAnBindFieldAttributeByFieldName(_obj, _obj.GetType().GetProperties()[i].Name); if (_DataBaseOpTypes != ORMWork.DataBaseOpTypes.Insert || (!(anBindFieldAttributeByFieldName.DefaultValue.ToUpper() == "SYS_GUID()") && !(anBindFieldAttributeByFieldName.DefaultValue.ToUpper() == "SYSDATE") && !(anBindFieldAttributeByFieldName.DefaultValue.ToLower() == "newid()") && !(anBindFieldAttributeByFieldName.DefaultValue.ToLower() == "getdate()"))) { if (_DataBaseOpTypes != ORMWork.DataBaseOpTypes.Insert || (!(anBindFieldAttributeByFieldName.DefaultValue.ToUpper() == "SYS_GUID()") && !(anBindFieldAttributeByFieldName.DefaultValue.ToUpper() == "SYSDATE") && !(anBindFieldAttributeByFieldName.DefaultValue.ToLower() == "newid()") && !(anBindFieldAttributeByFieldName.DefaultValue.ToLower() == "getdate()"))) { if (ORMWork.DataBaseOpTypes.Update == _DataBaseOpTypes && (bool.Parse(anBindFieldAttributeByFieldName.Key.ToString()) || anBindFieldAttributeByFieldName.Name.ToUpper() == "ID")) { if (text.Trim() != "") { text += " AND "; } text = anBindFieldAttributeByFieldName.Name + "=@" + anBindFieldAttributeByFieldName.Name; list.Add(this.CreateAnParameter(anBindFieldAttributeByFieldName)); } else { if (ORMWork.DataBaseOpTypes.Delete == _DataBaseOpTypes && (bool.Parse(anBindFieldAttributeByFieldName.Key.ToString()) || anBindFieldAttributeByFieldName.Name.ToUpper() == "ID")) { if (text.Trim() != "") { text += " AND "; } text = anBindFieldAttributeByFieldName.Name + "=@" + anBindFieldAttributeByFieldName.Name; list.Add(this.CreateAnParameter(anBindFieldAttributeByFieldName)); break; } if (_fieldpars.Trim() != "") { _fieldpars += ","; } _fieldpars = _fieldpars + "@" + anBindFieldAttributeByFieldName.Name; list.Add(this.CreateAnParameter(anBindFieldAttributeByFieldName)); } } } } if (text != "") { text = " WHERE " + text; } _where = text; result = list.ToArray <DbParameter>(); } catch (Exception ex) { throw ex; } return(result); }