zoukankan      html  css  js  c++  java
  • 利用反射插入数据库与更新数据库


    public int Insert<T>(T m) where T : class
    {
      PropertyInfo[] pInfos = m.GetType().GetProperties();
      FieldInfo[] fInfos = m.GetType().GetFields();

      List<string> lstCol = new List<string>();
      List<OleDbParameter> lstParam = new List<OleDbParameter>();

      for (int i = 0; i < pInfos.GetLength(0); i++)
      {
        PropertyInfo pInfo = pInfos[i];
        object value = pInfo.GetValue(m, null);
        string name = pInfo.Name;
        string DeclarType = pInfo.PropertyType.Name;
        if (DeclarType.ToUpper().Contains("DateTime".ToUpper()))
        {
          value = ((DateTime)value).ToString("yyyy-MM-dd HH:mm:ss.fff");
        }

        lstCol.Add(name);
        lstParam.Add(new OleDbParameter("@" + name, value));
      }

      string Keys = " " + string.Join(",", lstCol.ToArray());
      string Values = " " + "@" + string.Join(",@", lstCol.ToArray());


      string sql;
      sql = @"Insert into " + GetTableName() + "("
      + Keys
      + ")values("
      + Values
      + ")";

      string ErrorMsg;
      return DBAHelp.DBA_ExecuteNonQuery(sql, (OleDbParameter[])(lstParam.ToArray()), out ErrorMsg);

    }

    public int Update<T>(T m, string UpdateKey) where T : class
    {
      string FullName = m.GetType().FullName;
      T mNew = Activator.CreateInstance(m.GetType()) as T;

      PropertyInfo[] pInfos = m.GetType().GetProperties();
      PropertyInfo[] pInfosNew = mNew.GetType().GetProperties();


      List<string> lstCol = new List<string>();
      List<OleDbParameter> lstParam = new List<OleDbParameter>();

      OleDbParameter KeyParam = null;
      string sKey = "";

      for (int i = 0; i < pInfos.GetLength(0); i++)
      {
        PropertyInfo pInfo = pInfos[i];
        object value = pInfo.GetValue(m, null);
        string name = pInfo.Name;

        PropertyInfo pInfoNew = pInfosNew[i];
        object valueNew = pInfoNew.GetValue(mNew, null);

        if (UpdateKey.ToUpper() == name.ToUpper())
        {
          KeyParam = new OleDbParameter("@" + name, value);
          sKey = name + "=@" + name;
        }
        else if (!value.Equals(valueNew))
        {
          string Line = name + "=@" + name;
          lstCol.Add(Line);
          lstParam.Add(new OleDbParameter("@" + name, value));
        }
      }

      string Lines = string.Join(",", lstCol.ToArray());
      if (KeyParam != null)
      {
        lstParam.Add(KeyParam);
      }

      string sql;
      sql = @"Update " + GetTableName() + " Set "
      + Lines
      + " Where "
      + sKey
      + "";

      string ErrorMsg;
      return DBAHelp.DBA_ExecuteNonQuery(sql, (OleDbParameter[])(lstParam.ToArray()), out ErrorMsg);
    }

  • 相关阅读:
    python实现双向链表
    django contenttypes
    tensorflow学习笔记一
    vue指令和事件绑定
    es6简单介绍
    mysql主从复制
    mysql事务
    winform 使用 ReportViewer做报表
    设置控件获取焦点
    修改安卓串口蓝牙app问题记录
  • 原文地址:https://www.cnblogs.com/LongHuaiYu/p/5967690.html
Copyright © 2011-2022 走看看