Beispiel #1
0
 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;
     }
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
 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);
 }