Exemple #1
0
        /// <summary>
        ///  更新一个对象
        /// </summary>
        /// <param name="TDataBase"></param>
        public void UpdateOnlyObject(IDataBase TDataBase)
        {
            DataObjectAttribute TDataObject = TDataBase.GetType().GetCustomAttributes(typeof(DataObjectAttribute), false)[0] as DataObjectAttribute;

            string[] KeyS   = TDataObject.KeyS.Split(new char[] { ',' });
            Array    TArray = Array.CreateInstance(typeof(string), KeyS.Length);

            KeyS.CopyTo(TArray, 0);
            string TableName = TDataObject.Table;

            System.Reflection.FieldInfo[]        mFieldInfo    = TDataBase.GetType().GetFields();
            System.Data.SqlClient.SqlParameter[] TSqlParameter = new SqlParameter[mFieldInfo.Length];

            string SelSql         = "Update " + TableName + " Set ";
            string FieldValueName = string.Empty;
            string WhereName      = string.Empty;

            for (byte index = 0; index < mFieldInfo.Length; index++)
            {
                if (mFieldInfo[index].GetCustomAttributes(typeof(FieldObjectAttribute), false).Length != 0)
                {
                    FieldObjectAttribute TFieldObject = mFieldInfo[index].GetCustomAttributes(typeof(FieldObjectAttribute), false)[0] as FieldObjectAttribute;
                    //if (TFieldObject.Type == 1)
                    //{
                    TSqlParameter[index] = new SqlParameter("@" + mFieldInfo[index].Name, TDataBase.GetType().GetField(mFieldInfo[index].Name).GetValue(TDataBase));
                    //}
                }
                else
                {
                    if (Array.IndexOf(TArray, mFieldInfo[index].Name) == -1)
                    {
                        FieldValueName += FieldValueName.Length > 0 ? ", " + mFieldInfo[index].Name + "=@" + mFieldInfo[index].Name : mFieldInfo[index].Name + "=@" + mFieldInfo[index].Name;
                    }
                    TSqlParameter[index] = new SqlParameter("@" + mFieldInfo[index].Name, TDataBase.GetType().GetField(mFieldInfo[index].Name).GetValue(TDataBase));
                }
            }

            for (byte index = 0; index < KeyS.Length; index++)
            {
                WhereName += WhereName.Length > 0 ? " and " + KeyS[index] + " = @" + KeyS[index] : " Where " + KeyS[index] + " = @" + KeyS[index];
            }

            SelSql += FieldValueName + WhereName;
            ExeSQL(SelSql, TSqlParameter);
        }
Exemple #2
0
        /// <summary>
        ///  添加一个对象
        /// </summary>
        /// <param name="TDataBase"></param>
        public void AddOnlyObject(IDataBase TDataBase)
        {
            DataObjectAttribute TDataObject = TDataBase.GetType().GetCustomAttributes(typeof(DataObjectAttribute), false)[0] as DataObjectAttribute;

            string[] KeyS      = TDataObject.KeyS.Split(new char[] { ',' });
            string   TableName = TDataObject.Table;

            System.Reflection.FieldInfo[]        mFieldInfo    = TDataBase.GetType().GetFields();
            System.Data.SqlClient.SqlParameter[] TSqlParameter = new SqlParameter[mFieldInfo.Length];

            string SelSql    = "insert  into " + TableName + " ";
            string FieldName = string.Empty;
            string ValueName = string.Empty;

            for (byte index = 0; index < mFieldInfo.Length; index++)
            {
                if (mFieldInfo[index].GetCustomAttributes(typeof(FieldObjectAttribute), false).Length != 0)
                {
                    FieldObjectAttribute TFieldObject = mFieldInfo[index].GetCustomAttributes(typeof(FieldObjectAttribute), false)[0] as FieldObjectAttribute;
                    if (TFieldObject.Type == 0)
                    {
                        FieldName           += FieldName.Length > 0 ? "," + mFieldInfo[index].Name : mFieldInfo[index].Name;
                        ValueName           += ValueName.Length > 0 ? "," + "@" + mFieldInfo[index].Name : "@" + mFieldInfo[index].Name;
                        TSqlParameter[index] = new SqlParameter("@" + mFieldInfo[index].Name, System.Guid.NewGuid().ToString());
                    }
                    else if (TFieldObject.Type == 1)
                    {
                        // 此字段为自增列放弃
                    }
                }
                else
                {
                    FieldName           += FieldName.Length > 0 ? "," + mFieldInfo[index].Name : mFieldInfo[index].Name;
                    ValueName           += ValueName.Length > 0 ? "," + "@" + mFieldInfo[index].Name : "@" + mFieldInfo[index].Name;
                    TSqlParameter[index] = new SqlParameter("@" + mFieldInfo[index].Name, TDataBase.GetType().GetField(mFieldInfo[index].Name).GetValue(TDataBase));
                }
            }

            SelSql += " (" + FieldName + ") VALUES (" + ValueName + ")";
            ExeSQL(SelSql, TSqlParameter);
        }
Exemple #3
0
        /// <summary>
        ///   获得一个对象
        /// </summary>
        /// <param name="TDataBase"></param>
        public IDataBase GetOnlyObject(IDataBase TDataBase)
        {
            // 生成条件
            DataObjectAttribute TDataObject = TDataBase.GetType().GetCustomAttributes(typeof(DataObjectAttribute), false)[0] as DataObjectAttribute;

            string[] KeyS      = TDataObject.KeyS.Split(new char[] { ',' });
            string   TableName = TDataObject.Table;

            System.Data.SqlClient.SqlParameter[] TSqlParameter = new SqlParameter[KeyS.Length];
            System.Reflection.FieldInfo[]        mFieldInfo    = TDataBase.GetType().GetFields();
            string SelSql = "Select * From " + TableName + " ";

            for (byte index = 0; index < KeyS.Length; index++)
            {
                if (index == 0)
                {
                    SelSql += " Where " + KeyS[index] + " = @" + KeyS[index] + " ";
                }
                else
                {
                    SelSql += " and " + KeyS[index] + " = @" + KeyS[index] + " ";
                }
                TSqlParameter[index] = new SqlParameter("@" + KeyS[index], TDataBase.GetType().GetField(KeyS[index]).GetValue(TDataBase));
            }


            // 得到记录
            System.Data.DataSet TDataSet = new DataSet();
            TDataSet = GetSelectRow(SelSql, TSqlParameter);
            if (TDataSet.Tables[0].Rows.Count == 0)
            {
                return(null);
            }

            // 把数据分配到字段
            foreach (System.Reflection.FieldInfo TFieldInfo in mFieldInfo)
            {
                TDataBase.GetType().GetField(TFieldInfo.Name).SetValue(TDataBase, TDataSet.Tables[0].Rows[0][TFieldInfo.Name] == System.DBNull.Value ? GetTypeValue(TFieldInfo.FieldType) : TDataSet.Tables[0].Rows[0][TFieldInfo.Name]);
            }
            return(TDataBase);
        }
Exemple #4
0
        /// <summary>
        ///   删除一个对象
        /// </summary>
        /// <param name="TDataBase"></param>
        public void DelOnlyObject(IDataBase TDataBase)
        {
            DataObjectAttribute TDataObject = TDataBase.GetType().GetCustomAttributes(typeof(DataObjectAttribute), false)[0] as DataObjectAttribute;

            string[] KeyS      = TDataObject.KeyS.Split(new char[] { ',' });
            string   TableName = TDataObject.Table;

            System.Reflection.FieldInfo[]        mFieldInfo    = TDataBase.GetType().GetFields();
            System.Data.SqlClient.SqlParameter[] TSqlParameter = new SqlParameter[KeyS.Length];

            string SelSql         = "delete  " + TableName;
            string FieldValueName = string.Empty;

            for (byte index = 0; index < KeyS.Length; index++)
            {
                FieldValueName      += FieldValueName.Length > 0 ? " and " + KeyS[index] + " = @" + KeyS[index] : " Where " + KeyS[index] + " = @" + KeyS[index];
                TSqlParameter[index] = new SqlParameter("@" + KeyS[index], TDataBase.GetType().GetField(KeyS[index]).GetValue(TDataBase));
            }
            SelSql += FieldValueName;
            ExeSQL(SelSql, TSqlParameter);
        }