中国开发网: 论坛: 程序员情感CBD: 贴子 338075
没脾气2x: 小聪明害死人啊:
以前这么写的:
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 ) );

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录