统计某表分页总数GetCount为什么这么调用?
#region 统计某表分页总数
/// <summary>
/// 统计某表分页总数
/// </summary>
/// <param name="keyField">主键/索引键</param>
/// <param name="tableName">表名</param>
/// <param name="condition">查询条件</param>
/// <param name="pageSize">页宽</param>
/// <param name="RecordCount">记录总数</param>
/// <returns>返回分页总数</returns>
public int GetPageCount(string keyField, string tableName, string condition, int pageSize, int RecordCount)
{
int PageCount = 0;
PageCount = (RecordCount % pageSize) > 0 ? (RecordCount / pageSize) + 1 : RecordCount / pageSize;
if (PageCount < 1) PageCount = 1;
return PageCount;
}
/// <summary>
/// 统计某表分页总数
/// </summary>
/// <param name="keyField">主键/索引键</param>
/// <param name="tableName">表名</param>
/// <param name="condition">查询条件</param>
/// <param name="pageSize">页宽</param>
/// <returns>返回页面总数</returns>
public int GetPageCount(string keyField, string tableName, string condition, int pageSize, ref int RecordCount)
{
RecordCount = GetRecordCount(keyField, tableName, condition);
return GetPageCount(keyField, tableName, condition, pageSize, RecordCount);
}
/// <summary>
/// 统计某表分页总数
/// </summary>
/// <param name="Field">可重复的字段</param>
/// <param name="tableName">表名</param>
/// <param name="condition">查询条件</param>
/// <param name="pageSize">页宽</param>
/// <param name="flag">是否主键</param>
/// <returns>返回页页总数</returns>
public int GetPageCount(string Field, string tableName, string condition, ref int RecordCount, int pageSize, bool flag)
{
RecordCount = GetRecordCount(Field, tableName, condition, flag);
return GetPageCount(Field, tableName, condition, pageSize, ref RecordCount);
}
#endregion
为什么在第三个函数中还要调用第二个GetPageCount方法呢?
附:GetRecordCount代码
--------------------编程问答-------------------- 重载方法,让方法能统一地处理不同参数的情况。 --------------------编程问答-------------------- 为了计算一个数,还得返回一个数据集,写的人不懂ExecuteScalar吗? --------------------编程问答-------------------- 恩,是啊,真是多余!
#region 统计某表记录总数
/// <summary>
/// 统计某表记录总数
/// </summary>
/// <param name="KeyField">主键/索引键</param>
/// <param name="TableName">数据库.用户名.表名</param>
/// <param name="Condition">查询条件</param>
/// <returns>返回记录总数</returns>
public int GetRecordCount(string keyField, string tableName, string condition)
{
int RecordCount = 0;
string sql = "select count(" + keyField + ") as count from " + tableName + " " + condition;
DataSet ds = GetDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
RecordCount = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
}
ds.Clear();
ds.Dispose();
return RecordCount;
}
/// <summary>
/// 统计某表记录总数
/// </summary>
/// <param name="Field">可重复的字段</param>
/// <param name="tableName">数据库.用户名.表名</param>
/// <param name="condition">查询条件</param>
/// <param name="flag">字段是否主键</param>
/// <returns>返回记录总数</returns>
public int GetRecordCount(string Field, string tableName, string condition, bool flag)
{
int RecordCount = 0;
if (flag)
{
RecordCount = GetRecordCount(Field, tableName, condition);
}
else
{
string sql = "select count(distinct(" + Field + ")) as count from " + tableName + " " + condition;
DataSet ds = GetDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
RecordCount = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
}
ds.Clear();
ds.Dispose();
}
return RecordCount;
}
#endregion
而且,你说的重载方法,在第三个函数里面,有获取了RecordCount
但是调用第二个方法,又重新获取了RecordCount.
我觉得这有问题! --------------------编程问答-------------------- 重新获取RecordCount是为了给重新赋值.
函数重载--多态的一种表现. --------------------编程问答-------------------- 楼上分析得很不错
--------------------编程问答-------------------- 但这里面,在第三个函数中,查询了一遍。
但在第二个函数中,又重新查询了?那第一次不就多余了吗?
--------------------编程问答--------------------
RecordCount = GetRecordCount(keyField, tableName, condition);
RecordCount = GetRecordCount(keyField, tableName, condition);
RecordCount = GetRecordCount(Field, tableName, condition, flag);
GetRecordCount的参数个数都不一样吧.即使参数个数一样。值也不一定一样吧。先别忙着怀疑是程序的问题。先好好的分析分析. --------------------编程问答--------------------
是啊,他们的值是不一定一样的啊,
但是之前,也就是第三个函数,这样得到了RecordCount,但是下一条语句就调用
第二个函数了。
在第二个函数里面,出现你说的RecordCount的再一次获取。并且是ref。引用。
所以,就相当于,RecordCount的值是由第二个函数确定的。
那么,我就想问,在第三个函数中还要查询获取ReordCount,之后又会因为调用第二个函数
而重新获取值。这样不就是多余了吗?
--------------------编程问答-------------------- math.ceilling(......
--------------------编程问答-------------------- 确实多此一举,我觉得他应该调第一个GetPageCount而不应该调第二个 --------------------编程问答--------------------
为什么在第三个函数中还要调用第二个GetPageCount方法呢?
调用第二个GetPageCount没有意义 --------------------编程问答--------------------
这倒不是,这样可以传出来 Recount值。
只是里面获取了两次,有点多余。
补充:.NET技术 , C#