Exemple #1
0
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        public void Update <T>(T t)
        {
            List <PropertyInfo> list            = DataMapper.GetProperties <T>();
            List <string>       filteredColumns = new List <string>();

            if (_dbProvider is OleDbProvider)
            {
                filteredColumns.Add(ReflectionHelper.GetTypeField_IdentityKeys <T>());
            }
            else if (_dbProvider is SqlProvider)
            {
            }
            else if (_dbProvider is MySqlProvider)
            {
            }


            StringBuilder sb   = new StringBuilder(string.Format("update {0} set ", typeof(T).Name));
            int           size = list.Count;
            int           i    = 0;

            string idx = string.Empty;

            if (_dbProvider is MySqlProvider)
            {
                foreach (PropertyInfo pi in list)
                {
                    if (i != size - 1)
                    {
                        sb.AppendFormat("{0}=?{1},", pi.Name, pi.Name);
                    }
                    else
                    {
                        sb.AppendFormat("{0}=?{1} ", pi.Name, pi.Name);
                    }
                    i++;

                    if ((filteredColumns.Contains(pi.Name)))
                    {
                        idx = string.Format(" where idx={0}", pi.GetValue(t, null));
                    }
                }
            }
            else if (_dbProvider is OleDbProvider)
            {
                operation = new OledbEntityOperation(this);
                operation.Update <T>(t);
            }
            //if (string.IsNullOrEmpty(idx)) throw new ApplicationException("未发现合适的更新条件,为保护数据,终止了此次操作.....");
            ////  sb = new StringBuilder(sb.ToString().TrimEnd(','));
            //sb.AppendFormat(idx);
            //ExecuteNonQuery(sb.ToString(), CreateParameter(list, dbModel));
        }
Exemple #2
0
 public void UpdateV2 <T>(T t) where T : IDicSerialize
 {
     if (_dbProvider is OleDbProvider)
     {
         operation = new OledbEntityOperation(this);
         operation.UpdateV2 <T>(t);
     }
     else if (_dbProvider is MySqlProvider)
     {
         operation = new NjhDataEntityOPerationMysql(this);
         operation.UpdateV2 <T>(t);
     }
     else if (_dbProvider is SqlProvider)
     {
         operation = new NjhDataEntityOPerationMsSql(this);
         operation.UpdateV2 <T>(t);
     }
 }
Exemple #3
0
        public object InsertV2 <T>(T t) where T : IDicSerialize
        {
            object inserted = 0;

            if (_dbProvider is OleDbProvider)
            {
                operation = new OledbEntityOperation(this);
                inserted  = operation.InsertV2(t);
            }
            else if (_dbProvider is MySqlProvider)
            {
                operation = new NjhDataEntityOPerationMysql(this);
                inserted  = operation.InsertV2(t);
            }
            else if (_dbProvider is SqlProvider)
            {
                operation = new NjhDataEntityOPerationMsSql(this);
                inserted  = operation.InsertV2(t);
            }
            return(inserted);
        }
Exemple #4
0
        public object Insert <T>(T dbModel)
        {
            StringBuilder       sb   = null;
            List <PropertyInfo> list = DataMapper.GetProperties <T>();


            List <string> filteredColumns = null; filteredColumns = new List <string>();
            string        tbName          = typeof(T).Name;

            #region  获取表中的所有列
            List <string> columns = new List <string>();
            if (_dbProvider is OleDbProvider)
            {
                columns = GetAccessTbColumns((OleDbConnection)CreateConnection(), tbName);
            }

            list = list.Where(x => columns.Contains(x.Name, _compare)).ToList();
            #endregion


            #region 判断需要过滤的字段

            if (_dbProvider is SqlProvider)
            {
                string schema      = ExecuteScalar(string.Format("select top 1 [table_schema] from information_schema.columns where TABLE_NAME='{0}'", tbName)).ToString();
                string fulelTbName = string.Format("{0}.{1}", schema, tbName);
                sb = new StringBuilder(string.Format("insert into {0} (", fulelTbName));
                string sql = string.Format("select [name] from sys.columns WHERE object_id=OBJECT_ID('{0}') AND is_identity=1", fulelTbName);
                using (IDataReader dr = ExecuteReader(sql))
                {
                    while (dr.Read())
                    {
                        if (filteredColumns == null)
                        {
                            filteredColumns = new List <string>();
                        }
                        filteredColumns.Add(dr[0].ToString());
                    }
                }
            }
            else if (_dbProvider is OleDbProvider)
            {
                sb = new StringBuilder(string.Format("insert into {0} (", tbName));
                filteredColumns.Add(ReflectionHelper.GetTypeField_IdentityKeys <T>());
            }
            else if (_dbProvider is MySqlProvider)
            {
                sb = new StringBuilder(string.Format("insert into {0} (", string.Format("{0}", tbName)));
            }
            #endregion

            int size = list.Count;
            for (int i = 0; i < size; i++)
            {
                if (filteredColumns.Contains(list[i].Name, _compare))
                {
                    continue;
                }

                if (i != size - 1)
                {
                    sb.AppendFormat("{0},", list[i].Name);
                }
                else
                {
                    sb.AppendFormat("{0}) values(", list[i].Name);
                }
            }

            object last = "0";
            if (_dbProvider is MySqlProvider)
            {
                PropertyInfo pi = null;
                for (int i = 0; i < size; i++)
                {
                    pi = list[i];
                    if (filteredColumns.Contains(list[i].Name, _compare))
                    {
                        continue;
                    }
                    if (i != size - 1)
                    {
                        sb.AppendFormat("?{0},", pi.Name);
                    }
                    else
                    {
                        sb.AppendFormat("?{0})", pi.Name);
                    }
                }
                last = ExecuteScalar("SELECT  LAST_INSERT_ID()");
            }
            else if (_dbProvider is SqlProvider)
            {
                PropertyInfo pi = null;
                for (int i = 0; i < size; i++)
                {
                    pi = list[i];
                    if (filteredColumns.Contains(list[i].Name))
                    {
                        continue;
                    }
                    if (i != size - 1)
                    {
                        sb.AppendFormat("@{0},", pi.Name);
                    }
                    else
                    {
                        sb.AppendFormat("@{0})", pi.Name);
                    }
                }
                last = ExecuteScalar("SELECT  @@identity");
            }
            else if (_dbProvider is OleDbProvider)
            {
                //PropertyInfo pi = null;
                //for (int i = 0; i < size; i++)
                //{
                //    pi = list[i];
                //    if (filteredColumns.Contains(list[i].Name, _compare)) continue;
                //    if (i != size - 1)
                //    {
                //        sb.AppendFormat("@{0},", pi.Name);
                //    }
                //    else
                //    {
                //        sb.AppendFormat("@{0})", pi.Name);
                //    }
                //}
                //ExecuteNonQuery(sb.ToString(), CommandType.Text, CreateParameter(list, dbModel));
                //last = ExecuteScalar("SELECT  max(idx) from " + tbName);
                operation = new OledbEntityOperation(this);
                last      = operation.Insert <T>(dbModel);
            }

            //   HttpContext.Current.Response.Write(sb.ToString());

            return(last);
        }