Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }