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); }
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); }