我有一个分页储存过程:最后是这样
if @IsCount != 0
exec("select count(*) as Total from [contents] where " + @strWhere )exec (@strSQL)我在C#里调用的时候,如果传入IsCount=0 就能得到记录集,如果@IsCount=1的话,SqlDataReader 就返回1条,就是Total的值。 而我在查询分析器里 运行这个储存过程,@IsCount=1,他既能得到Total的值,又能得到数据集~~~====================================================================================问题2: 我的网站基本是查询内容的,数据在1个表里,大概有7-9W条记录。20多个字段,1条记录大概2-3K的数据。
因为查询的人很多,而且查询的关键字几乎不重复,我想把所有的的数据一次装到DataSet里,然后缓存起来,然后用.Select过滤来当查询,好不好。
if @IsCount != 0
exec("select count(*) as Total from [contents] where " + @strWhere )exec (@strSQL)我在C#里调用的时候,如果传入IsCount=0 就能得到记录集,如果@IsCount=1的话,SqlDataReader 就返回1条,就是Total的值。 而我在查询分析器里 运行这个储存过程,@IsCount=1,他既能得到Total的值,又能得到数据集~~~====================================================================================问题2: 我的网站基本是查询内容的,数据在1个表里,大概有7-9W条记录。20多个字段,1条记录大概2-3K的数据。
因为查询的人很多,而且查询的关键字几乎不重复,我想把所有的的数据一次装到DataSet里,然后缓存起来,然后用.Select过滤来当查询,好不好。
解决方案 »
- asp:TextBox诡异的地方:更改文本后Text属性不会变?
- ASP.NET新增的网站,调试时引用的url能否直接为根目录?(高分求助)
- asp.net要学习div+css吗?
- 关于网站后台模块
- leapFTP.exe [5288]中发生未处理的win32异常 要使用选定的调试器进行调试吗
- ■■为什么这个储存过程老是提示错误?帮我看看好吗?
- asp.net2 c# 中如何动态生成菜单和动态隐藏部分菜单呢?
- ACCESS输入问题
- Server.GetLastError()的问题
- 谈谈同步服务器端和客户端文件的解决方案
- 出现奇怪的状况 路径获取不了文件
- 名为“1”的列已属于此 DataTable。
C#接收存储过程输出参数: public static decimal Cart_UserAmount(int UID)
{
decimal iRet;
SqlConnection conn = new SqlConnection(Conn_Str);
SqlCommand cmd = new SqlCommand("Cart_UserAmount", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@UID", UID);
cmd.Parameters.Add("@Amount", SqlDbType.Decimal).Direction=ParameterDirection.Output;
try
{
conn.Open();
cmd.ExecuteNonQuery();
iRet = (decimal)cmd.Parameters["@Amount"].Value;
}
catch (SqlException ex)
{
throw ex;
}
finally
{
conn.Close();
}
return iRet;
}
参考
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@IsCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(2000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(1000) -- 排序类型
if @OrderType != 0
begin
set @strTmp = "<(select min"
set @strOrder = " order by [" + @fldName +"] desc"
end
else
begin
set @strTmp = ">(select max"
set @strOrder = " order by [" + @fldName +"] asc"
end
set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"
+ @strOrder
if @strWhere != ''
set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @fldName + "] from [" + @tblName + "] where (" + @strWhere + ") "
+ @strOrder + ") as tblTmp) and (" + @strWhere + ") " + @strOrder
if @PageIndex = 1
begin
set @strTmp = ""
if @strWhere != ''
set @strTmp = " where (" + @strWhere + ")"
set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "]" + @strTmp + " " + @strOrder
end
if @IsCount != 0
set @strSQL = "select count(*) as Total from [" + @tblName + "]"
exec (@strSQL)
GO