public static int DeleteByID(object id,Type type) { if (mySqlclient == null) mySqlclient = MySqlClient.GetMySqlClient(); DataAttr dataAttr = (DataAttr)type.GetCustomAttribute(typeof(DataAttr), false); StringBuilder sb = new StringBuilder(); string key = ""; Type keyType = null; sb.Append("DELETE FROM "); sb.Append(dataAttr.TableName); sb.Append(" WHERE "); 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; keyType = info.PropertyType; sb.Append(key + " =@"+ key); break; } } sb.Append(ANDCOMPANYID); List<MySqlParameter> parameters = new List<MySqlParameter>(); MySqlParameter parameter = new MySqlParameter("@"+key, mySqlclient.ConvertDBType(keyType)); parameter.Value = id; parameters.Add(parameter); return mySqlclient.ExecuteNonQuery(sb.ToString(), parameters, CommandType.Text); }
public static List <T> SelectDataByID <T>(object id) { List <T> tList = new List <T>(); if (mySqlclient == null) { mySqlclient = MySqlClient.GetMySqlClient(); } Type type = typeof(T); DataAttr dataAttr = (DataAttr)type.GetCustomAttribute(typeof(DataAttr), false); StringBuilder sb = new StringBuilder(); PropertyInfo[] propertyInfos = type.GetProperties(); string strkey = ""; Type keyType = null; foreach (PropertyInfo info in propertyInfos) { DataAttr infoAttr = (DataAttr)info.GetCustomAttribute(typeof(DataAttr), false); if (infoAttr.Key) { strkey = info.Name; keyType = info.PropertyType; break; } } sb.Append(" SELECT * FROM " + dataAttr.TableName + " WHERE " + strkey + "=@" + strkey); sb.Append(ANDCOMPANYID); List <MySqlParameter> parameters = new List <MySqlParameter>(); MySqlParameter parameter = new MySqlParameter("@" + strkey, mySqlclient.ConvertDBType(keyType)); parameter.Value = id; parameters.Add(parameter); DataSet ds = mySqlclient.GetDataSet(sb.ToString(), parameters, CommandType.Text); DataTable dt = ds.Tables[0]; for (int i = 0; i < dt.Rows.Count; ++i) { T t = (T)Activator.CreateInstance(type); object objPacked = t; for (int j = 0; j < ds.Tables[0].Columns.Count && j < propertyInfos.Length; ++j) { PropertyInfo info = propertyInfos[j]; DataAttr infoAttr = (DataAttr)info.GetCustomAttribute(typeof(DataAttr), false); if (infoAttr == null) { continue; } if (dt.Rows[i][j] == null) { info.SetValue(t, ""); } else if (dt.Rows[i][j] == System.DBNull.Value) { info.SetValue(t, null); } else { info.SetValue(t, dt.Rows[i][j]); } } t = (T)objPacked; tList.Add(t); } return(tList); }
public static int UpdateByID(object data) { if (mySqlclient == null) { mySqlclient = MySqlClient.GetMySqlClient(); } 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); sb.Append(ANDCOMPANYID); 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, mySqlclient.ConvertDBType(info.PropertyType)); parameter.Value = info.GetValue(data); parameters.Add(parameter); } } MySqlParameter keyParameter = new MySqlParameter("@" + key, mySqlclient.ConvertDBType(keyType)); keyParameter.Value = keyValue; parameters.Add(keyParameter); return(mySqlclient.ExecuteNonQuery(sb.ToString(), parameters, CommandType.Text)); }