zoukankan      html  css  js  c++  java
  • 在Nhibernate中执行sql语句

    在Nhibernate中执行sql语句,如果不将查询后的结果转换成对象类型,在绑定datagrid等数据源的时候就会出现问题,具体做法如下:
    执行sql语句函数(query表示sql查询语句,tablename也可以理解为表名,但实际的作用是映射到相对应的实体类):
       
     1private IList ExecuteSQL( string query,string tablename) 
     2        {
     3            IList result = new ArrayList();
     4            ISessionFactoryImplementor s = (ISessionFactoryImplementor)_cfg.BuildSessionFactory();
     5            IDbCommand cmd = s.ConnectionProvider.Driver.CreateCommand();
     6            cmd.CommandText = query;
     7            IDbConnection conn = s.OpenConnection();
     8            try 
     9            {
    10                cmd.Connection = conn;
    11                IDataReader rs = cmd.ExecuteReader();
    12                int j = 0 ;
    13                while ( rs.Read() ) 
    14                {
    15                    int fieldCount = rs.FieldCount;
    16                    object[] values = new Object[ fieldCount ];
    17                    for ( int i = 0; i < fieldCount; i ++ )
    18                        values[i] = rs.GetValue(i);
    19                    chooseEntity(result,tablename,values);
    20                }

    21            }

    22            finally 
    23            {
    24                s.CloseConnection(conn);
    25            }

    26            return result;
    27        }

    在以上的代码中,函数chooseEntity就是对查询的结的转换,如下:
        
     1private void chooseEntity(IList result,string tablename,object[] values)
     2        {
     3            switch(tablename)
     4            {
     5                case "tbl_b_AcceptConiteminfo":
     6                    AcceptConIteminfo accConitem = new AcceptConIteminfo(values);
     7                    result.Add( accConitem );
     8                    break;
     9            }

    10        }

    在实际类的构造函数中,将数组values的值赋值到实体类中,如下:
        
    实体类实例
    ok,经过以上的处理,可以直接用来绑定数据源,当然,这样处理有不好的地方,只不过也给出了一个解决问题的方法。
     
  • 相关阅读:
    小伙创业做奶茶,兢兢业业把奶茶店已经扩张到了10家分店
    这个饭店每天只卖一道菜,月入百万?
    夫妻合力建大棚,种植辣椒和番茄,从此走上致富路
    下岗工人创业做办公设备,他将业务做的蒸蒸日上
    三十而立的他开始创业,打造旗舰网店,达到月销30万的传奇
    不断在创业路上寻找突破,他开店多家,没想到公司还上市了
    带着梦想和坚强,她收获了80后创业的广阔舞台,网站实现营利
    22岁开始创业,她把集团开到23家分店,营业额高达20亿元
    windows下git commit使用gvim编辑器
    windows下git commit使用gvim编辑器
  • 原文地址:https://www.cnblogs.com/oldhorse/p/445958.html
Copyright © 2011-2022 走看看