关于数据库及存储过程

数据库中count(*)和count(数字)的区别:
我们知道要查询一个表的记录数,通常使用Select count(*) from 表名,那么它和count(数字),这里的数字可以是任意数字,又有何区别呢?count(*)在查询汇总的时候是去遍历表字段大
小最短的那一列,而count(数字),打个比方,count(1)就是在查询结果后面加一列,那一列的数据全是1,统计有多少个1,所以这里的数字无论是什么都可以,所以这两个方法从执行效率上
讲,没有高低之分,因为字段的长度有的比int还小,那么count(*)就比count(数字)的效率高,反之则低,要据实际情况而论。

exec 存储过程名
exec ('SQL语句')

数据访问层使用存储过程(例子):

public List<Model.HKSJ_Main> LoadDataByPage(int pageIndex, int pageSize, out int total)
{
//执行一个存储过程将当前页数据查询出来。

SqlParameter totalPara = new SqlParameter("@total", SqlDbType.Int);
DataSet ds = new DataSet();


using (SqlConnection conn = new SqlConnection(DbHelperSQL.connectionString))
{
conn.Open();

using (SqlDataAdapter adapter = new SqlDataAdapter("PR_LoadPageData", conn))
{
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;

adapter.SelectCommand.Parameters.AddWithValue("@pageSize", pageSize);
adapter.SelectCommand.Parameters.AddWithValue("@pageIndex", pageIndex);


totalPara.Direction = ParameterDirection.Output;//输出参数。
adapter.SelectCommand.Parameters.Add(totalPara);


adapter.Fill(ds);
}
}

total = int.Parse(ds.Tables[1].Rows[0][0].ToString());
total =(int)totalPara.Value;

//把DataSet数据转成集合数据
return DataTableToList(ds.Tables[0]);


}

posted on 2013-09-03 17:47  chens2865  阅读(321)  评论(0编辑  收藏  举报

导航