Ejemplo n.º 1
0
        public TransactionParameter GenerateUpdateSqlWithParam <T>(T data)
        {
            Type          type     = data.GetType();
            DataAttr      dataAttr = (DataAttr)type.GetCustomAttribute(typeof(DataAttr), false);
            StringBuilder sb       = new StringBuilder();
            string        key      = "";
            object        keyValue = null;
            Type          keyType  = null;

            sb.Append("UPDATE  ");
            sb.Append(dataAttr.TableName);
            sb.Append(" Set ");
            PropertyInfo[] propertyInfos = type.GetProperties();
            foreach (PropertyInfo info in propertyInfos)
            {
                DataAttr infoAttr = (DataAttr)info.GetCustomAttribute(typeof(DataAttr), false);
                if (infoAttr == null)
                {
                    continue;
                }
                if (infoAttr.Key)
                {
                    key      = info.Name;
                    keyValue = info.GetValue(data);
                    keyType  = info.PropertyType;
                }
                else
                {
                    sb.Append(info.Name + " =@" + info.Name + " ,");
                }
            }
            sb.Remove(sb.Length - 1, 1);//移除 多余的 ","
            sb.Append(" Where " + key + " =@" + key);

            List <MySqlParameter> parameters = new List <MySqlParameter>();

            for (int i = 0; i < propertyInfos.Length; ++i)
            {
                PropertyInfo info     = propertyInfos[i];
                DataAttr     infoAttr = (DataAttr)info.GetCustomAttribute(typeof(DataAttr), false);
                if (infoAttr == null)
                {
                    continue;
                }
                if (!infoAttr.Key)
                {
                    string         strPara   = "@" + info.Name;
                    MySqlParameter parameter = new MySqlParameter(strPara, ConvertDBType(info.PropertyType));
                    parameter.Value = info.GetValue(data);
                    parameters.Add(parameter);
                }
            }
            MySqlParameter keyParameter = new MySqlParameter("@" + key, ConvertDBType(keyType));

            keyParameter.Value = keyValue;
            parameters.Add(keyParameter);

            TransactionParameter transPara = new TransactionParameter();

            transPara.SqlString     = sb.ToString();
            transPara.SqlParameters = parameters;
            return(transPara);
        }
Ejemplo n.º 2
0
        public TransactionParameter GenerateInsertSqlWithParam <T>(T data)
        {
            Type          type     = typeof(T);
            DataAttr      dataAttr = (DataAttr)type.GetCustomAttribute(typeof(DataAttr), false);
            StringBuilder sb       = new StringBuilder();

            sb.Append("INSERT INTO ");
            sb.Append(dataAttr.TableName + "(");
            PropertyInfo[] propertyInfos = type.GetProperties();
            foreach (PropertyInfo info in propertyInfos)
            {
                DataAttr infoAttr = (DataAttr)info.GetCustomAttribute(typeof(DataAttr), false);
                if (infoAttr == null)
                {
                    continue;
                }
                if (infoAttr.Bquery)
                {
                    sb.Append(info.Name + ",");
                }
            }
            sb.Remove(sb.Length - 1, 1);//移除 多余的 ","
            sb.Append(")");
            sb.Append("VALUES(");
            foreach (PropertyInfo info in propertyInfos)
            {
                DataAttr infoAttr = (DataAttr)info.GetCustomAttribute(typeof(DataAttr), false);
                if (infoAttr == null)
                {
                    continue;
                }
                if (infoAttr.Bquery)
                {
                    sb.Append("@" + info.Name + ",");
                }
            }
            sb.Remove(sb.Length - 1, 1);//移除 多余的 ","
            sb.Append(")");

            List <MySqlParameter> parameters = new List <MySqlParameter>();

            for (int i = 0; i < propertyInfos.Length; ++i)
            {
                PropertyInfo info     = propertyInfos[i];
                DataAttr     infoAttr = (DataAttr)info.GetCustomAttribute(typeof(DataAttr), false);
                if (infoAttr == null)
                {
                    continue;
                }
                if (infoAttr.Bquery)
                {
                    string         strPara   = "@" + info.Name;
                    MySqlParameter parameter = new MySqlParameter(strPara, ConvertDBType(info.PropertyType));
                    parameter.Value = info.GetValue(data);
                    parameters.Add(parameter);
                }
            }
            TransactionParameter transPara = new TransactionParameter();

            transPara.SqlString     = sb.ToString();
            transPara.SqlParameters = parameters;
            return(transPara);
        }