zoukankan      html  css  js  c++  java
  • csharp:Nhibernate Procedure with CreateSQLQuery and GetNamedQuery

    <?xml version="1.0" encoding="utf-8"?>
    <hibernate-mapping assembly="Domain" namespace="Domain" xmlns="urn:nhibernate-mapping-2.2">
      <class name="DuCardType" table="DuCardType" lazy="true" >
        <id name="CardTypeId" column="CardTypeId">
          <generator class="identity" />
        </id>
        <property name="CardTypeName">
          <column name="CardTypeName" sql-type="nvarchar" not-null="true" />
        </property>
        <property name="CardTypeColor">
          <column name="CardTypeColor" sql-type="nvarchar" not-null="true" />
        </property>
    
      <sql-insert name="InsertDuCardType">exec proc_Insert_DuCardType ?,?,?</sql-insert>
      <!--<sql-insert name="SqlInsertDuCardType">INSERT INTO DuCardType (CardTypeName, CardTypeColor) VALUES (?,?,?)</sql-insert>-->
      <!--<sql-insert>
          <sql-update>
            <sql-delete>-->
      </class>
    </hibernate-mapping>
    

      

      ///<summary>
            /// 追加记录返回值
            ///</summary>
            ///<param name="DuCardType">输入参数:DuCardTypeInfo</param>
            ///<param name="CardTypeId">返回参数:CardTypeId</param>
            ///<returns>返回是否添加的个数</returns>
            public int InsertDuCardTypeOutput(DuCardType cardType, out int cardTypeId)
            {
    
                int sid = 1;
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                ITransaction tran = session.BeginTransaction();
                try
                {
                    session.Save(cardType);
                    cardTypeId = cardType.CardTypeId;
                    tran.Commit();
                }
                catch (MappingException ex)
                {
                    sid = 0;
                    tran.Rollback();
                    throw ex;
    
                }
    
                return sid;
    
                //return dal.InsertDuCardTypeOutput(duCardType,out cardTypeId);
            }
      ///<summary>
            ///修改记录
            ///</summary>
            ///<param name="DuCardType">输入参数:DuCardTypeInfo</param>
            ///<returns>返回修改的多少记录数</returns>
            public int UpdateDuCardType(DuCardType duCardType)
            {
                int sid = 1;
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                ITransaction tran = session.BeginTransaction();
                try
                {
                    session.Update(duCardType);
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    sid = 0;
                    tran.Rollback();
                    throw ex;
    
                }
    
                return sid;
                //return dal.UpdateDuCardType(duCardType);
            }
    

      

     /// <summary>
            /// 删除
            /// </summary>
            /// <param name="customer"></param>
            /// <returns></returns>
            public int Dell(DuCardType cardType)
            {
                int sid = 1;
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                ITransaction tran = session.BeginTransaction();
                try
                {
                    session.Delete(cardType);
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    sid = 0;
                    tran.Rollback();
                    throw ex;
    
                }
                return sid;
            }
    

      

     ///<summary>
            /// 删除记录
            ///</summary>
            ///<param name="cardTypeId">输入参数:CardTypeId</param>
            ///<returns>返回删除记录条数</returns>
            public bool DeleteDuCardType(int cardTypeId)
            {
                bool isok = false;
                try
                {
                    IDbDataParameter[] par = new SqlParameter[]
                    {                   
    					new SqlParameter(),
                    };
                    par[0].ParameterName = "CardTypeId";
                    par[0].Value = cardTypeId;
                    isok = DBHelper.ExecuteNonQuery(SessionFactory, CommandType.StoredProcedure, "proc_Delete_DuCardType");
                }
                catch (NotImplementedException ex)
                {
                    ex.Message.ToString();
                }
    
                return isok;
    
    
                //return dal.DeleteDuCardType(cardTypeId);
            }
    
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="customer"></param>
            /// <returns></returns>
            public int Dell(DuCardType cardType)
            {
                int sid = 1;
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                ITransaction tran = session.BeginTransaction();
                try
                {
                    session.Delete(cardType);
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    sid = 0;
                    tran.Rollback();
                    throw ex;
    
                }
                return sid;
            }
    
            ///<summary>
            /// 删除多条记录
            ///</summary>
            ///<param name="cardTypeId">输入参数:CardTypeId</param>
            ///<returns>返回删除多少记录</returns>
            public bool DeleteDuCardTypeId(string cardTypeId)
            {
                bool isok = false;           
                try
                {
                    IDbDataParameter[] par = new SqlParameter[]
                    {                   
    					new SqlParameter(),
                    };
                    par[0].ParameterName = "CardTypeId";
                    par[0].Value = cardTypeId;
                    isok = DBHelper.ExecuteNonQuery(SessionFactory, CommandType.StoredProcedure, "proc_Delete_DuCardTypeId");
                }
                catch (NotImplementedException ex)
                {
                    ex.Message.ToString();
                }
    
                return isok;
    
                //return dal.DeleteDuCardTypeId(cardTypeId);
            }
    

      

     /// <summary>
            /// 
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public IList<DuCardType> CardTypeSql(int id)
            {
    
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                IList<DuCardType> card = new List<DuCardType>();
                if (!object.Equals(session, null))
                {
                    //写法1
                    //return _session.CreateQuery("from DuCardType c where c.CardTypeName='" + firstname + "'")
                    //    .List<DuCardType>();
    
                    //写法2:位置型参数
                    //return _session.CreateQuery("from DuCardType c where c.CardTypeName=?")
                    //    .SetString(0, firstname)
                    //    .List<DuCardType>();
                    //写法4.
                    //var sql = "select * from DuCardType";
                    //var query = session.CreateSQLQuery(sql)
                    //.AddScalar("CardTypeId", NHibernateUtil.Int32)
                    //.AddScalar("CardTypeName", NHibernateUtil.String)
                    //.AddScalar("CardTypeColor", NHibernateUtil.String)
                    //.SetResultTransformer(Transformers.AliasToBean<DuCardType>());
                    //result = query.List<DuCardType>();  
    
                    //写法3:命名型参数(推荐)
    
                    var query = session.CreateSQLQuery("Select * FROM DuCardType where CardTypeId=:CardTypeId")
                        .SetInt32("CardTypeId", id)
                        .SetResultTransformer(Transformers.AliasToBean(typeof(DuCardType)));
                    card = query.List<DuCardType>();
                }
                return card;
    
            }
    
            /// <summary>
            /// 存储过程
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public IList<DuCardType> CardTypeProcedures(int id)
            {
                //读到数据
                IList<DuCardType> li = null;
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                string sql = @"exec proc_Select_DuCardType :CardTypeId";
                IQuery query = session.CreateSQLQuery(sql)
                    .SetInt32("CardTypeId", id);
                var list = query.List();
                foreach (object[] item in list)
                {
                    li =new List<DuCardType>();
                    var cardType = new DuCardType();
                    cardType.CardTypeId = (int)item[0];
                    cardType.CardTypeName = (string)item[1];
                    cardType.CardTypeColor = item[2].ToString();
                    li.Add(cardType);
                }
    
                //query = query.SetResultTransformer(Transformers.AliasToBean<OrderDto>());
                //var list2 = query.List<OrderDto>();
    
                var result = from cardType in li
                             orderby cardType.CardTypeName //名字排序
                             select cardType;
    
                return li;
    
            }
    

      GetNamedQuery: 存储过程

      /// <summary>
            /// 存储过程查询
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public IList<DuCardType> CardTypeProcedures(int id)
            {
                //读到数据
                IList<DuCardType> li = null;
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
    
                try
                {
    
                    IQuery query = session.GetNamedQuery("proc_Select_DuCardType")
                         .SetParameter("CardTypeId", id)
                         .SetResultTransformer(
                         Transformers.AliasToBean(typeof(DuCardType)));
                    li = query.List<DuCardType>();
    
                    //var executor = new HibernateStoredProcedureExecutor(session);
                    //var lie = executor.ExecuteStoredProcedure<DuCardType>(
                    //  "proc_Select_DuCardType",  //find no
                    //  new[]
                    //  {
                    //      new SqlParameter("CardTypeId", id),
                    //      //new SqlParameter("startDate", startDate),
                    //     // new SqlParameter("endDate", endDate),
                    //  });
                    //li = lie.ToList();
                    //return li;
    
    
    
                    //string sql = @"exec proc_Select_DuCardType :CardTypeId";
                    //IQuery query = session.CreateSQLQuery(sql)
                    //    .SetInt32("CardTypeId", id);
                    //var list = query.List();
                    //foreach (object[] item in list)
                    //{
                    //    li = new List<DuCardType>();
                    //    var cardType = new DuCardType();
                    //    cardType.CardTypeId = (int)item[0];
                    //    cardType.CardTypeName = (string)item[1];
                    //    cardType.CardTypeColor = item[2].ToString();
                    //    li.Add(cardType);
                    //}
    
                    ////query = query.SetResultTransformer(Transformers.AliasToBean<OrderDto>());
                    ////var list2 = query.List<OrderDto>();
    
                    //var result = from cardType in li
                    //             orderby cardType.CardTypeName //名字排序
                    //             select cardType;
                }
                catch (MappingException ex)
                {
                    ex.Message.ToString();
                }
                return li;
    
            }
    

      

     /// <summary>
            /// Linq查询
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public IQueryable<DuCardType> getCardTypeID(int id)
            {
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                var query = session.Query<DuCardType>();
                var result = from cardType in query
                             where cardType.CardTypeId == id
                             select cardType;
                return result;
            }
    

      

     /// <summary>
            /// 存储过程分页
            /// 涂聚文 2016.07.03
            /// </summary>
            /// <param name="strwhere">Where条件</param>
            /// <param name="aecdesc">排序字段</param>
            /// <param name="pageIndex">开始页码</param>
            /// <param name="pageSize">页大小</param>
            /// <param name="RecordCount">输出总页数</param>
            /// <returns></returns>
            public DataTable GetDataPage(string strwhere, string aecdesc, int pageIndex, int pageSize, out int RecordCount)
            {
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                DataSet data = new DataSet();
                try
                {
    
                    //SessionFactory.ConnectionProvider.Driver
                    IDbCommand cmd = SessionFactory.OpenSession().Connection.CreateCommand();
                    //cmd.CommandText = "testaa";
    
    
                    //IDbConnection con = session.Connection;
                    //Type conType = con.GetType();
                    //string conTypeName = conType.FullName;
                    // if (!conTypeName.EndsWith("Connection"))
                    //    throw new Exception("Unable to interpret connection type name: " + conTypeName);
                    //string adapterTypeName = conTypeName.Substring(0, conTypeName.Length - 10) + "DataAdapter";
    
    
                    IDbDataAdapter adapter = new SqlDataAdapter();
    
                    //IDbDataAdapter adapter = conType.Assembly.CreateInstance(adapterTypeName) as IDbDataAdapter;
                    //if (adapter == null)
                    //    throw new Exception("Unable to load IDbDataAdapter: " + adapterTypeName);  
                    // IDbCommand cmd = con.CreateCommand();
    
                    cmd.CommandText = "GetPagedRecordFor2005_2008";
                    cmd.CommandType = CommandType.StoredProcedure;
                    IDbDataParameter p = cmd.CreateParameter();
                    IDbDataParameter p1 = cmd.CreateParameter();
                    IDbDataParameter p2 = cmd.CreateParameter();
                    IDbDataParameter p3 = cmd.CreateParameter();
                    IDbDataParameter p4 = cmd.CreateParameter();
                    IDbDataParameter p5 = cmd.CreateParameter();
                    IDbDataParameter p6 = cmd.CreateParameter();
                   // IDbDataParameter p7 = cmd.CreateParameter();
    
                    if (string.IsNullOrEmpty(strwhere))
                    {
                        strwhere = " 1=1 ";
                    }
                    p.ParameterName = "Table";
                    p.Value = "DuCardType";
    
                    p1.ParameterName = "TIndex";
                    p1.Value = "CardTypeId";
    
                    p2.ParameterName = "Column";
                    p2.Value = " * "; 
    
                    p3.ParameterName = "Sql";
                    p3.Value = strwhere;
    
                    p4.ParameterName = "PageIndex";
                    p4.Value = pageIndex;
    
                    p5.ParameterName = "PageSize";
                    p5.Value = pageSize;
    
                    p6.ParameterName = "Sort";
                    p6.Value = aecdesc;
    
                    //p1.ParameterName = "geovindu";
                    //p1.Size = 10;
                    //p1.Direction = ParameterDirection.Output;
    
    
    
                    //p7.ParameterName = "TotalRecords";
                    //p7.Size = 10;
                    //p7.Direction = ParameterDirection.Output;
    
                    cmd.Parameters.Add(p);
                    cmd.Parameters.Add(p1);
                    cmd.Parameters.Add(p2);
                    cmd.Parameters.Add(p3);
                    cmd.Parameters.Add(p4);
                    cmd.Parameters.Add(p5);
                    cmd.Parameters.Add(p6);
                   // cmd.Parameters.Add(p7);
    
                    adapter.SelectCommand = cmd;
                    adapter.Fill(data);
                    //RecordCount =(int)p7.Value;         
                    cmd.Cancel();
                    cmd.Dispose();
                    RecordCount = data.Tables[0].Rows.Count;
    
                }
                catch (NotImplementedException ex)
                {
    
                    RecordCount = 0;
                    ex.Message.ToString();
                }
    
                return data.Tables[0];
    
               // return dal.GetDataPage(strwhere, aecdesc, pageIndex, pageSize, out RecordCount);
            }
    

     

     /// <summary>
            /// 存储过程分页
            /// 涂聚文 2016.07.03
            /// </summary>
            /// <param name="strwhere">Where条件</param>
            /// <param name="aecdesc">排序字段</param>
            /// <param name="pageIndex">开始页码</param>
            /// <param name="pageSize">页大小</param>
            /// <param name="RecordCount">输出总页数</param>
            /// <returns></returns>
            public DataTable GetDataPage(string strwhere, string aecdesc, int pageIndex, int pageSize, out int RecordCount)
            {
                NHibernate.ISession session = this.SessionFactory.GetCurrentSession();
                DataSet data = new DataSet();
                try
                {
    
                    //SessionFactory.ConnectionProvider.Driver
                    IDbCommand cmd = SessionFactory.OpenSession().Connection.CreateCommand();
                    //cmd.CommandText = "testaa";
    
    
                    //IDbConnection con = session.Connection;
                    //Type conType = con.GetType();
                    //string conTypeName = conType.FullName;
                    // if (!conTypeName.EndsWith("Connection"))
                    //    throw new Exception("Unable to interpret connection type name: " + conTypeName);
                    //string adapterTypeName = conTypeName.Substring(0, conTypeName.Length - 10) + "DataAdapter";
    
    
                    IDbDataAdapter adapter = new SqlDataAdapter();
    
                    //IDbDataAdapter adapter = conType.Assembly.CreateInstance(adapterTypeName) as IDbDataAdapter;
                    //if (adapter == null)
                    //    throw new Exception("Unable to load IDbDataAdapter: " + adapterTypeName);  
                    // IDbCommand cmd = con.CreateCommand();
                    //1.
                   // cmd.CommandText = "GetPagedRecordFor2005_2008";
                   // cmd.CommandType = CommandType.StoredProcedure;
                   // IDbDataParameter p = new SqlParameter();// cmd.CreateParameter();
                   // IDbDataParameter p1 = cmd.CreateParameter();
                   // IDbDataParameter p2 = cmd.CreateParameter();
                   // IDbDataParameter p3 = cmd.CreateParameter();
                   // IDbDataParameter p4 = cmd.CreateParameter();
                   // IDbDataParameter p5 = cmd.CreateParameter();
                   // IDbDataParameter p6 = cmd.CreateParameter();
                   //// IDbDataParameter p7 = cmd.CreateParameter();
    
                   // if (string.IsNullOrEmpty(strwhere))
                   // {
                   //     strwhere = " 1=1 ";
                   // }
                   // p.ParameterName = "Table";
                   // p.Value = "DuCardType";
    
                   // p1.ParameterName = "TIndex";
                   // p1.Value = "CardTypeId";
    
                   // p2.ParameterName = "Column";
                   // p2.Value = " * "; 
    
                   // p3.ParameterName = "Sql";
                   // p3.Value = strwhere;
    
                   // p4.ParameterName = "PageIndex";
                   // p4.Value = pageIndex;
    
                   // p5.ParameterName = "PageSize";
                   // p5.Value = pageSize;
    
                   // p6.ParameterName = "Sort";
                   // p6.Value = aecdesc;
    
                   // //p1.ParameterName = "geovindu";
                   // //p1.Size = 10;
                   // //p1.Direction = ParameterDirection.Output;
    
    
                    //输出值
                   // //p7.ParameterName = "TotalRecords";
                   // //p7.Size = 10;
                   // //p7.Direction = ParameterDirection.Output;
    
                   // cmd.Parameters.Add(p);
                   // cmd.Parameters.Add(p1);
                   // cmd.Parameters.Add(p2);
                   // cmd.Parameters.Add(p3);
                   // cmd.Parameters.Add(p4);
                   // cmd.Parameters.Add(p5);
                   // cmd.Parameters.Add(p6);
                   //// cmd.Parameters.Add(p7);
                   // adapter.SelectCommand = cmd;
                   // adapter.Fill(data);
                   // //RecordCount =(int)p7.Value;         
                   // cmd.Cancel();
                   // cmd.Dispose();
    
    
                    //2.      
                    IDbDataParameter[] par = new SqlParameter[]
                    {
                        new SqlParameter(), //表名
    					new SqlParameter(),//主键,可以带表头
    					new SqlParameter(),//读取字段
    					new SqlParameter(),//Where条件
    					new SqlParameter(),//开始页码
    					new SqlParameter(),//页大小
    					new SqlParameter(),//排序字段
    
                    };
                    if (string.IsNullOrEmpty(strwhere))
                    {
                        strwhere = " 1=1 ";
                    }
                    par[0].ParameterName = "Table"; //表名
                    par[0].Value="DuCardType";
                    par[1].ParameterName = "TIndex";
                    par[1].Value = "CardTypeId";
                    par[2].ParameterName = "Column";
                    par[2].Value = " * ";
                    par[3].ParameterName = "Sql";//查询条件
                    par[3].Value = strwhere;
                    par[4].ParameterName = "PageIndex";
                    par[4].Value = pageIndex;
                    par[5].ParameterName = "PageSize";
                    par[5].Value = pageSize;
                    par[6].ParameterName = "Sort";
                    par[6].Value = aecdesc;
                    data = DBHelper.ExecuteDataSet(SessionFactory, CommandType.StoredProcedure, "GetPagedRecordFor2005_2008", par);
    
                    RecordCount = data.Tables[0].Rows.Count;
    
                }
                catch (NotImplementedException ex)
                {
    
                    RecordCount = 0;
                    ex.Message.ToString();
                }
    
                return data.Tables[0];
    
               // return dal.GetDataPage(strwhere, aecdesc, pageIndex, pageSize, out RecordCount);
            }
    

      

     

     /// <summary>
        /// 2016 geovindu
        /// </summary>
        public static class IListConverDataTable
        {
            /// <summary>
            /// 
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="data"></param>
            /// <returns></returns>
            public static DataTable ToDataTable<T>(this IList<T> data)
            {
                PropertyDescriptorCollection properties =
                    TypeDescriptor.GetProperties(typeof(T));
                DataTable table = new DataTable();
                foreach (PropertyDescriptor prop in properties)
                    table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
                foreach (T item in data)
                {
                    DataRow row = table.NewRow();
                    foreach (PropertyDescriptor prop in properties)
                        row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                    table.Rows.Add(row);
                }
                return table;
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="list"></param>
            /// <returns></returns>
            public static DataTable ToDataTable(IList list)
            {
                DataTable result = new DataTable();
                if (list.Count > 0)
                {
                    PropertyInfo[] propertys = list[0].GetType().GetProperties();
                    foreach (PropertyInfo pi in propertys)
                    {
                        result.Columns.Add(pi.Name, pi.PropertyType);
                    }
                    for (int i = 0; i < list.Count; i++)
                    {
                        ArrayList tempList = new ArrayList();
                        foreach (PropertyInfo pi in propertys)
                        {
                            object obj = pi.GetValue(list[i], null);
                            tempList.Add(obj);
                        }
                        object[] array = tempList.ToArray();
                        result.LoadDataRow(array, true);
                    }
                }
                return result;
            }
        }
    

      

     DBHelper.cs

              //
              private IDbConnection _idbConnection;
              private IDataReader _iDataReader;
              private IDbCommand _idbCommand;
              private IDbTransaction _idbTransaction;
              private IDbDataParameter[] _idbParameters;
              /// <summary>
              /// 
              /// </summary>
              public IDbConnection Connection
              {
                  get { return _idbConnection; }
                  set { _idbConnection = value; }
              }
    
              public IDataReader DataReader
              {
                  get { return _iDataReader; }
                  set { _iDataReader = value; }
              }
    
              public IDbCommand Command
              {
                  get { return _idbCommand; }
                  set { _idbCommand = value; }
              }
    
              public IDbTransaction Transaction
              {
                  get { return _idbTransaction; }
                  set { _idbTransaction = value; }
              }
    
              public IDbDataParameter[] Parameters
              {
                  get { return _idbParameters; }
                  set { _idbParameters = value; }
              }
    
    
              public static IDbTransaction GetTransaction(NHibernate.ISession session)  
             {  
                 IDbConnection iDbConnection = session.Connection;  
                 IDbTransaction iDbTransaction = iDbConnection.BeginTransaction();  
                 return iDbTransaction;  
             }
    
              public static IDbDataParameter[] GetParameters(int paramsCount)
             {
                 IDbDataParameter[] idbParams = new IDbDataParameter[paramsCount];
                  
                 for (int i = 0; i < paramsCount; i++)
                 {
                     idbParams[i] = new SqlParameter();
                 }
                 return idbParams;  
             }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="paramsCount"></param>
              public void CreateParameters(int paramsCount)
              {
                  Parameters = new IDbDataParameter[paramsCount];
                  Parameters = GetParameters(paramsCount);
              }
    
              public void AddParameters(int index, string paramName, object objValue)
              {
                  if (index < Parameters.Length)
                  {
                      Parameters[index].ParameterName = paramName;
                      Parameters[index].Value = objValue;
                  }
              }
              /// <summary>
              /// 
              /// </summary>
              /// <param name="sessionFactory"></param>
              /// <param name="commandType"></param>
              /// <param name="commandText"></param>
              /// <returns></returns>
              public IDataReader ExecuteReader(NHibernate.ISessionFactory sessionFactory, CommandType commandType, string commandText)
              {
                  Command = sessionFactory.OpenSession().Connection.CreateCommand();
                  Command.Connection = Connection;
                  PrepareCommand(Command, Connection, Transaction, commandType, commandText, Parameters);
                  DataReader = Command.ExecuteReader();
                  Command.Parameters.Clear();
                  return DataReader;
              }
              /// <summary>
              /// 
              /// </summary>
              /// <param name="sessionFactory"></param>
              /// <param name="commandType"></param>
              /// <param name="commandText"></param>
              /// <returns></returns>
              public int ExecuteNonQuery(NHibernate.ISessionFactory sessionFactory, CommandType commandType, string commandText)
              {
                  Command = sessionFactory.OpenSession().Connection.CreateCommand(); 
                  PrepareCommand(Command, Connection, Transaction, commandType, commandText, Parameters);
                  int returnValue = Command.ExecuteNonQuery();
                  Command.Parameters.Clear();
                  return returnValue;
              }
    
              public object ExecuteScalar(NHibernate.ISessionFactory sessionFactory, CommandType commandType, string commandText)
              {
                  Command = sessionFactory.OpenSession().Connection.CreateCommand(); 
                  PrepareCommand(Command, Connection, Transaction, commandType, commandText, Parameters);
                  object returnValue = Command.ExecuteScalar();
                  Command.Parameters.Clear();
                  return returnValue;
              }
                /// <summary>
                /// 
                /// </summary>
                /// <param name="sessionFactory"></param>
                /// <param name="commandType"></param>
                /// <param name="commandText"></param>
                /// <returns></returns>
              public DataSet ExecuteDataSet(NHibernate.ISessionFactory sessionFactory, CommandType commandType, string commandText)
              {
                  Command = sessionFactory.OpenSession().Connection.CreateCommand(); 
                  PrepareCommand(Command, Connection, Transaction, commandType, commandText, Parameters);
                  IDbDataAdapter dataAdapter = new SqlDataAdapter(); //根据不同的数据库选择不同的数据库
                  dataAdapter.SelectCommand = Command;
                  DataSet dataSet = new DataSet();
                  dataAdapter.Fill(dataSet);
                  Command.Parameters.Clear();
                  return dataSet;
              }
              /// <summary>
              /// 
              /// </summary>
              /// <param name="sessionFactory"></param>
              /// <param name="commandType"></param>
              /// <param name="commandText"></param>
              /// <param name="sqlParams"></param>
              /// <returns></returns>
              public DataSet ExecuteDataSet(NHibernate.ISessionFactory sessionFactory, CommandType commandType, string commandText, IDbDataParameter[] sqlParams)
              {
                  Command = sessionFactory.OpenSession().Connection.CreateCommand();
                  PrepareCommand(Command, Connection, Transaction, commandType, commandText, sqlParams);
                  IDbDataAdapter dataAdapter = new SqlDataAdapter(); //根据不同的数据库选择不同的数据库
                  dataAdapter.SelectCommand = Command;
                  DataSet dataSet = new DataSet();
                  dataAdapter.Fill(dataSet);
                  Command.Parameters.Clear();
                  return dataSet;
              } 
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="command"></param>
            /// <param name="commandParameters"></param>
              private void AttachParameters(IDbCommand command, IDbDataParameter[] commandParameters)
              {
                  foreach (IDbDataParameter idbParameter in commandParameters)
                  {
                      if (idbParameter.Direction == ParameterDirection.InputOutput && idbParameter.Value == null)
                      {
                          idbParameter.Value = DBNull.Value;
                      }
                      command.Parameters.Add(idbParameter);
                  }
              }  
            /// <summary>
            /// 
            /// </summary>
            /// <param name="command"></param>
            /// <param name="connection"></param>
            /// <param name="transaction"></param>
            /// <param name="commandType"></param>
            /// <param name="commandText"></param>
            /// <param name="commandParameters"></param>
              private void PrepareCommand(IDbCommand command, IDbConnection connection, IDbTransaction transaction,
                                           CommandType commandType, string commandText, IDbDataParameter[] commandParameters)
              {
                  command.Connection = connection;
                  command.CommandText = commandText;
                  command.CommandType = commandType;
                  if (transaction != null)
                  {
                      command.Transaction = transaction;
                  }
                  if (commandParameters != null)
                  {
                      AttachParameters(command, commandParameters);
                  }
              }  
    

      

  • 相关阅读:
    MVC5中页面传值,保存,回传
    MVC ajax传递model,ajax接收model
    创建对象的常用四种模式和优缺点
    Promise的用法
    关于深拷贝与浅拷贝
    作用域和作用域链
    谈谈JS中的闭包
    encodeURI和encodeURIComponent区别
    window.scrollTo()
    浮动和常用清除浮动的四种方法
  • 原文地址:https://www.cnblogs.com/geovindu/p/5633828.html
Copyright © 2011-2022 走看看