泛型多功能操作类-1(增删改操作)

using System;
using System.Data;
using System.Data.Common;
using System.Data.OracleClient;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Text;

namespace Attributes
{
    public static class DataOperate<T>
    {
        private static readonly string SQL_INSERT = "INSERT INTO {0}({1}) VALUES ({2})";
        private static readonly string SQL_DELETE = "DELETE FROM {0} WHERE {1}";
        private static readonly string SQL_UPDATE = "UPDATE {0} SET {1} where {2}";
        private static readonly string SQL_SELECT = "SELECT * FROM {0} where {1}";

        /// <summary>
        /// 插入数据
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="primaryKey">主键不作为数据插入项</param>
        /// <returns></returns>
        public static int Insert(T entity)
        {
            string tableName = string.Empty;
            StringBuilder fieldName = new StringBuilder();
            StringBuilder value = new StringBuilder();

            Type type = entity.GetType();
            tableName = type.Name.Replace("Object", "");
            PropertyInfo[] propertyArray = type.GetProperties();
            OracleParameter[] SqlPar = new OracleParameter[propertyArray.Length];
            int index = 0;
            foreach (PropertyInfo property in propertyArray)
            {
                string columnName = string.Empty;
                object obj = property.GetValue(entity, null);
                if (obj != null)
                {
                    columnName = property.Name;
                    fieldName.AppendFormat("{0},", columnName);
                    value.AppendFormat(":{0},", columnName);
                    SqlPar[index++] = GetParamter.GetOracleParamter(":" + property.Name, property, obj.ToString() );
                }
            }
            string sql = string.Format(SQL_INSERT, tableName, fieldName.ToString().Trim(','), value.ToString().Trim(','));
            return DbHelperOra.ExecuteSql(sql, SqlPar);
        }

        /// <summary>
        /// 按主键删除
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="prmaryKey">按主键删除</param>
        /// <returns></returns>
        public static int Delete(T entity, string primaryKey)
        {
            string tableName = string.Empty;
            string fieldName = string.Empty;
            Type type = entity.GetType();
            tableName = type.Name.Replace("Object", "");
            PropertyInfo[] propertyArray = type.GetProperties();
            foreach (PropertyInfo property in propertyArray)
            {
                if (property.Name.ToLower() == primaryKey.ToLower())
                {
                    object obj = property.GetValue(entity, null);

                    fieldName = obj.ToString();
                    break;
                }
            }
            string sql = string.Format(SQL_DELETE, tableName, primaryKey + "=" + fieldName);
            return DbHelperOra.ExecuteSql(sql);
        }

        /// <summary>
        /// 根据条件更新
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="primaryKey"></param>
        /// <returns></returns>
        public static int Update(T entity, string field)
        {
            string tableName = string.Empty;
            StringBuilder fieldName = new StringBuilder();

            Type type = entity.GetType();
            tableName = type.Name.Replace("Object", "");
            PropertyInfo[] propertyArray = type.GetProperties();
            OracleParameter[] SqlPar = new OracleParameter[propertyArray.Length];
            int index = 0;
            foreach (PropertyInfo property in propertyArray)
            {
                string columnName = string.Empty;
                object obj = property.GetValue(entity, null);
                if (obj != null)
                {
                    columnName = property.Name;
                    if (columnName == field)
                    {
                        field = columnName + "='" + obj.ToString() + "'";
                        continue;
                    }
                    else
                    {
                        fieldName.AppendFormat("{0}=:{0},", columnName);
                        SqlPar[index++] = GetParamter.GetOracleParamter(":" + property.Name, property,obj.ToString());
                    }
                }
            }

            string sql = string.Format(SQL_UPDATE, tableName,
                fieldName.ToString().Substring(0, fieldName.Length - 1), field);
            return DbHelperOra.ExecuteSql(sql, SqlPar);
        }

        /// <summary>
        /// 根据条件查询,返回DataSet
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public static DataSet Select(T entity)
        {
            string tableName = string.Empty;
            List<string> condition = new List<string>();
            Type type = entity.GetType();
            tableName = type.Name.Replace("Object", "");
            PropertyInfo[] propertyArray = type.GetProperties();
            foreach (PropertyInfo property in propertyArray)
            {
                object obj = property.GetValue(entity, null);
                if (obj != null)
                {
                    condition.Add(string.Format("{0}='{1}'", property.Name, obj));
                }
            }
            string strCondition = string.Empty;
            if (condition.Count == 0)
                strCondition = "1=1";
            else if (condition.Count == 1)
                strCondition = condition[0];
            else
            {
                for (int i = 0; i < condition.Count - 1; i++)
                    strCondition += string.Format("{0} and ", condition[i]);
                strCondition += condition[condition.Count - 1];
            }
            string sql = string.Format(SQL_SELECT, tableName, strCondition);
            return DbHelperOra.ExecuteDataSet(sql);
        }

        /// <summary>
        /// 根据条件查询,返回SqlDataReader
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public static OracleDataReader SelectReader(T entity)
        {
            string tableName = string.Empty;
            List<string> condition = new List<string>();
            Type type = entity.GetType();
            tableName = type.Name.Replace("Object", "");
            PropertyInfo[] propertyArray = type.GetProperties();
            foreach (PropertyInfo property in propertyArray)
            {
                object obj = property.GetValue(entity, null);
                if (obj != null)
                {
                    condition.Add(string.Format("{0}='{1}'", property.Name, obj));
                }
            }
            string strCondition = string.Empty;
            if (condition.Count == 0)
                strCondition = "1=1";
            else if (condition.Count == 1)
                strCondition = condition[0];
            else
            {
                for (int i = 0; i < condition.Count - 1; i++)
                    strCondition += string.Format("{0} and ", condition[i]);
                strCondition += condition[condition.Count - 1];
            }
            string sql = string.Format(SQL_SELECT, tableName, strCondition);
            return DbHelperOra.ExecuteReader(sql);
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值