如何用nhibernate,写取出数据库前5行数据语句 top 5 不能使用,估计nhibernate里面不支持top语句 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public IList GetTopMN(Type type,string orderbyFields,bool descOrAsc,int m,int n) { if ( m > n ) return null; IList entities = null; ISession session = null; try { session = //...open your nhibernate session ICriteria c = session.CreateCriteria(type); if ( descOrAsc ) c.AddOrder(Order.Desc(orderbyFields)); else c.AddOrder(Order.Asc(orderbyFields)); entities = c.SetFirstResult(m).SetMaxResults(n-m).List(); session.Close(); } catch(Exception err) { throw err; } finally { session.Close(); } return entities; } public IList ExecuteSQL( string query ) { IList result = new ArrayList(); NHibernate.Cfg.Configuration cfg=new NHibernate.Cfg.Configuration (); ISessionFactoryImplementor s = (ISessionFactoryImplementor)cfg.BuildSessionFactory(); IDbCommand cmd = s.ConnectionProvider.Driver.CreateCommand(); cmd.CommandText = query; IDbConnection conn = s.OpenConnection(); try { cmd.Connection = conn; IDataReader rs = cmd.ExecuteReader(); while ( rs.Read() ) { int fieldCount = rs.FieldCount; object[] values = new Object[ fieldCount ]; for ( int i = 0; i < fieldCount; i ++ ) values[i] = rs.GetValue(i); result.Add( values ); } } finally { s.CloseConnection(conn); } return result;}直接执行sql也成吧 nhibernate提供了一个接口IQuery用来设置查询语句、参数等,此接口的实现类为QueryImpl,跟CriteriaImpl一样,不能在nhibernate程序集外直接创建,只能通过session的CreateQuery来取得一个IQuery接口。这里列出IQuery接口的一些方法: SetMaxResults:设置返回的最大结果数,可用于分页; 如果直接执行sql的话,那还用NHibernate干什么呢?这显然违背了使用O/R Mapping的原则 服务器路径问题 master母版页中使用application 关于Gridview点更新时,获取不到编辑的内容 Ajax 异步调用,问题来了 .net代码无法在iis环境下预览?? 100分求一发文控件 objectdatasource 未能找到带参数的非泛型方法“UpdataRecord”:DriverID 提示加载类型库/dll出错,怎么解决? 水晶报表过滤数据 ASP.NET 入门遇到的问题! 控件嵌套的数据条目控制问题?? 各位大哥大姐们,帮帮我吧!……(聊天室)通宵等待55555555555
{
if ( m > n )
return null;
IList entities = null;
ISession session = null;
try
{
session = //...open your nhibernate session
ICriteria c = session.CreateCriteria(type);
if ( descOrAsc )
c.AddOrder(Order.Desc(orderbyFields));
else
c.AddOrder(Order.Asc(orderbyFields));
entities = c.SetFirstResult(m).SetMaxResults(n-m).List();
session.Close();
}
catch(Exception err)
{
throw err;
}
finally
{
session.Close();
}
return entities;
}
IList result = new ArrayList();
NHibernate.Cfg.Configuration cfg=new NHibernate.Cfg.Configuration ();
ISessionFactoryImplementor s = (ISessionFactoryImplementor)cfg.BuildSessionFactory();
IDbCommand cmd = s.ConnectionProvider.Driver.CreateCommand();
cmd.CommandText = query; IDbConnection conn = s.OpenConnection();
try {
cmd.Connection = conn;
IDataReader rs = cmd.ExecuteReader(); while ( rs.Read() ) {
int fieldCount = rs.FieldCount;
object[] values = new Object[ fieldCount ];
for ( int i = 0; i < fieldCount; i ++ )
values[i] = rs.GetValue(i);
result.Add( values );
}
}
finally {
s.CloseConnection(conn);
} return result;
}直接执行sql也成吧
SetMaxResults:设置返回的最大结果数,可用于分页;