以前这么写的:
sql = "SELECT * FROM forum_msgs "
+ " WHERE owner_board_name = @BoardName "
+ " AND ( "
+ " ( @BlockIDFrom >= @BlockIDTo "
+ " AND ( ( BlockID > @BlockIDTo AND @withequal = 0 ) OR ( BlockID >= @BlockIDTo AND @withequal = 1 ) ) "
+ " AND ( BlockID <= @BlockIDFrom ) ) "
+ " OR ( @BlockIDFrom < @BlockIDTo "
+ " AND ( BlockID >= @BlockIDFrom AND @BlockIDFrom <> 0 ) "
+ " AND ( ( BlockID < @BlockIDTo AND @withequal = 0 ) OR ( BlockID <= @BlockIDTo AND @withequal = 1 ) ) ) "
+ " ) "
+ " ORDER BY BlockID DESC, BlockOrderID ";
IDataReader drMessageTree = SqlDbProvider.ExecuteReader( sql,
SqlHelper.MakeInParam( "@BoardName", BoardName ),
SqlHelper.MakeInParam( "@BlockIDFrom", nFirstBlockID ),
SqlHelper.MakeInParam( "@BlockIDTo", nNextBlockID ),
SqlHelper.MakeInParam( "@withequal", nBlockCount < PageSize + 1 ? 1 : 0 ) );
现在改成这样了:
sql = "SELECT * FROM forum_msgs "
+ " WHERE owner_board_name = @BoardName "
+ " AND ( ";
if ( nFirstBlockID >= nNextBlockID )
{
if ( nBlockCount < PageSize + 1 )
{
sql += " ( BlockID >= @BlockIDTo ) ";
}
else
{
sql += " ( BlockID > @BlockIDTo ) ";
}
sql += " AND ( BlockID <= @BlockIDFrom ) ";
}
else
{
sql += " ( BlockID >= @BlockIDFrom AND @BlockIDFrom <> 0 ) AND ";
if ( nBlockCount < PageSize )
{
sql += " ( BlockID <= @BlockIDTo ) ";
}
else
{
sql += " ( BlockID < @BlockIDTo ) ";
}
}
sql += " ) "
+ " ORDER BY BlockID DESC, BlockOrderID ";
IDataReader drMessageTree = SqlDbProvider.ExecuteReader( sql,
SqlHelper.MakeInParam( "@BoardName", BoardName ),
SqlHelper.MakeInParam( "@BlockIDFrom", nFirstBlockID ),
SqlHelper.MakeInParam( "@BlockIDTo", nNextBlockID ) );
Notemper2x 3.1 ( ̄ε( ̄#)
没脾气2x 之 个人综合篇:
http://notemper2x.cndev.org/
我的 panoramio 相册:
http://panoramio.com/user/zhaixudong
我的 flickr相册:
http://www.flickr.com/photos/notemper2x/


QQ号20250出售,售价400,000元整(5位、皇冠80级、VIP7)a