最新评论
现在好想叫属于“微软的企业库”模块里面的一个错误日志处理模块了。实用、强大---企业库( Enterprise Library June 2005) 中包括了七个应用程序块(Application Blocks )包括:配置管理应用程序块(Configuration Application Block)、数据访问应用程序块(Data Access Application Block)、安全应用程序块(Security Application Block)、日志及仪表盘管理应用程序块(Logging and Instrumentation Application Block)、加密应用程序块(Cryptography Application Block)、异常处理应用程序块(Exception Handling Application Block)、缓存应用程序块(Caching Application Block)。
Re:OWC使用技巧集 ~乖乖~ 2011-12-15 16:34
@LeeChi
可以实现,参见http://www.cnblogs.com/Apple010/archive/2011/12/15/2289065.html
Re:sql 多条件查询的一种简单的方法 elfwarden 2011-10-16 16:03
楼主的方法太棒了,后悔没早点看到楼主的文章
稍稍分享下我笨拙的方法,我是通过判定strSql中有没有Where来判断连接词是用where还是and
if (strSql.IndexOf("Where") != -1)
strSql += "And ";
else
strSql += "Where ";
膜拜楼主
Re:阿里软件接口开发基础(淘宝网) C# 九五二七 2011-08-31 14:17
thanks
无法绑定由多个部分组成的标识符
无法绑定由多个部分组成的标识符
无法绑定由多个部分组成的标识符
无法绑定由多个部分组成的标识符
Re:针对sql 2005优化的高性能分页存储过程 edobnet 2010-11-24 11:47
已经修改,谢谢提宝贵意见!
[quote]and i wanna 3q:
别的都还不错,就是当@isCount大于1的时候,where条件没了确实是个Bug。
我把你的代码改了一小下
set @sql = ' SELECT '+@Fields+ '
FROM (SELECT ROW_NUMBER() OVER(ORDER BY '+@Sort+') AS rownum,
'+@Fields+ '
FROM '+@Tables+' ' +@strFilter+') AS D
把条件+@strFilter加上了。
[/quote]
感谢这位 请楼主也改改!!
无语了~~~
第一页你加上了分页的条件
以后的页面你没加上分页的条件~~
到最后一页就乱了~~~
你仔细看看~~~
改改~~
Re:针对sql 2005优化的高性能分页存储过程 fuck103594223 2010-10-02 23:08
+ @new_where1 + @new_order1 + ') AS TMP) '+ @new_order1
PRINT @SortType PRINT '正向检索'
END
ELSE --反向检索
BEGIN
SET @Sql = 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM ('
+ 'Select TOP ' + STR(@PageSize) + ' '
+ @FieldList + ' FROM '
+ @TableName + @new_where2 + @PrimaryKey + ' > '
+ '(Select MAX(' + @PrimaryKey + ') FROM (Select TOP '
+ STR(@TotalCount-@PageSize*@PageIndex) + ' ' + @PrimaryKey
+ ' FROM ' + @TableName
+ @new_where1 + @new_order2 +' ) AS TMP) '+ @new_order2
+ ' ) AS TMP ' + @new_order1
PRINT @SortType PRINT '反向检索'
END
END
IF @SortType = 3 --多列排序,必须包含主键,且放置最后,否则不处理
BEGIN
IF CHARINDEX(',' + @PrimaryKey + ' ',',' + @strOrder) = 0
BEGIN PRINT('ERR_02') RETURN END
IF @PageIndex <= CEILING((@TotalCount+0.0)/@PageSize)/2 --正向检索
BEGIN
SET @Sql = 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM ( '
+ 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM ( '
+ ' Select TOP ' + STR(@PageSize*@PageIndex) + ' ' + @FieldList
+ ' FROM ' + @TableName + @new_where1 + @new_order1 + ' ) AS TMP '
+ @new_order2 + ' ) AS TMP ' + @new_order1
PRINT @SortType PRINT '多列排序, 正向检索 '
END
ELSE --反向检索
BEGIN
SET @Sql = 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM ( '
+ 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM ( '
+ ' Select TOP ' + STR(@TotalCount-@PageSize *@PageIndex+@PageSize) + ' ' + @FieldList
+ ' FROM ' + @TableName + @new_where1 + @new_order2 + ' ) AS TMP '
+ @new_order1 + ' ) AS TMP ' + @new_order1
PRINT @SortType PRINT '多列排序, 反向检索 '
END
END
END
PRINT(@SQL)
EXEC(@Sql)
Re:针对sql 2005优化的高性能分页存储过程 fuck103594223 2010-10-02 23:08
+ @TableName + @new_where1 + @new_order1 +') AS TMP ' + @new_order1
END
IF @PageIndex >= CEILING((@TotalCount+0.0)/@PageSize) --返回最后一页数据
BEGIN
SET @Sql = 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM ('
+ 'Select TOP ' + STR(ABS(@PageSize*@PageIndex-@TotalCount-@PageSize))
+ ' ' + @FieldList + ' FROM '
+ @TableName + @new_where1 + @new_order2 + ' ) AS TMP '
+ @new_order1
END
END
ELSE
BEGIN
IF @SortType = 1 --仅主键正序排序
PRINT @SortType
BEGIN
IF @PageIndex <= CEILING((@TotalCount+0.0)/@PageSize)/2 --正向检索
BEGIN
SET @Sql = 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM '
+ @TableName + @new_where2 + @PrimaryKey + ' > '
+ '(Select MAX(' + @PrimaryKey + ') FROM (Select TOP '
+ STR(@PageSize*(@PageIndex-1)) + ' ' + @PrimaryKey
+ ' FROM ' + @TableName
+ @new_where1 + @new_order1 +' ) AS TMP) '+ @new_order1
PRINT @sortType PRINT '正向检索'
END
ELSE --反向检索
BEGIN
SET @Sql = 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM ('
+ 'Select TOP ' + STR(@PageSize) + ' '
+ @FieldList + ' FROM '
+ @TableName + @new_where2 + @PrimaryKey + ' < '
+ '(Select MIN(' + @PrimaryKey + ') FROM (Select TOP '
+ STR(@TotalCount-@PageSize*@PageIndex) + ' ' + @PrimaryKey
+ ' FROM ' + @TableName
+ @new_where1 + @new_order2 +' ) AS TMP) '+ @new_order2
+ ' ) AS TMP ' + @new_order1
PRINT @SortType PRINT '反向检索'
END
END
IF @SortType = 2 --仅主键反序排序
BEGIN
IF @PageIndex <= CEILING((@TotalCount+0.0)/@PageSize)/2 --正向检索
BEGIN
SET @Sql = 'Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM '
+ @TableName + @new_where2 + @PrimaryKey + ' < '
+ '(Select MIN(' + @PrimaryKey + ') FROM (Select TOP '
+ STR(@PageSize*(@PageIndex-1)) + ' ' + @PrimaryKey
+' FROM '+ @TableName
Re:针对sql 2005优化的高性能分页存储过程 fuck103594223 2010-10-02 23:08
/*admid,admaccount
admaccount,siteid,admid,
7
0
siteid,
1 */
PRINT CHARINDEX(SUBSTRING(@new_order3,1,CHARINDEX(',',@new_order3)),@FieldList+',')
IF CHARINDEX(SUBSTRING(@new_order3,1,CHARINDEX(',',@new_order3)),@FieldList+',')<=0
-- 表示如果 filed1在 @fieldList 中
BEGIN
PRINT SUBSTRING(@new_order3,1,CHARINDEX(',',@new_order3))
/*
,admaccount
,siteid
,admid
*/
PRINT 'aaaaaaaaaaaaaaa'+ @FieldList
SET @FieldList =
@FieldList + ','+ SUBSTRING(@new_order3,1,CHARINDEX(',',@new_order3)-1)
PRINT 'dddddddd'+ @FieldList
END
SET @new_order3 = ---常规的 截取字符串
SUBSTRING(@new_order3,CHARINDEX(',',@new_order3)+1,LEN(@new_order3))
END
PRINT '@FieldList' +@FieldList
END
END
SET @SqlCount = 'Select @TotalCount=COUNT(*),@TotalPageCount=CEILING((COUNT(*)+0.0)/'
+ CAST(@PageSize AS VARCHAR)+') FROM (Select * FROM ' + @TableName + @new_where1+') AS T'
IF @RecorderCount = 0
BEGIN
EXEC SP_EXECUTESQL @SqlCount,N'@TotalCount INT OUTPUT,@TotalPageCount INT OUTPUT',
@TotalCount OUTPUT,@TotalPageCount OUTPUT
END
ELSE
BEGIN
Select @TotalCount = @RecorderCount
END
IF @PageIndex > CEILING((@TotalCount+0.0)/@PageSize)
BEGIN
SET @PageIndex = CEILING((@TotalCount+0.0)/@PageSize)
END
IF @PageIndex = 1 or @PageIndex >= CEILING((@TotalCount+0.0)/@PageSize)
BEGIN
IF @PageIndex = 1 --返回第一页数据
BEGIN
SET @Sql = 'Select * FROM (Select TOP ' + STR(@PageSize) + ' ' + @FieldList + ' FROM '
Re:针对sql 2005优化的高性能分页存储过程 fuck103594223 2010-10-02 23:07
DECLARE @new_order1 VARCHAR(1000)
DECLARE @new_order2 VARCHAR(1000)
DECLARE @new_order3 VARCHAR(1000)
DECLARE @Sql VARCHAR(8000)
DECLARE @SqlCount NVARCHAR(4000)
IF ISNULL(@strWhere,'') = ''
BEGIN
SET @new_where1 = ' '
SET @new_where2 = ' Where '
END
ELSE
BEGIN
SET @new_where1 = ' Where ' + @strWhere -- 为count 准备条件
SET @new_where2 = ' Where ' + @strWhere + ' AND ' ---为select list 准备条件
END
IF ISNULL(@strOrder,'') = '' or @SortType = 1 or @SortType = 2
BEGIN
IF @SortType = 1
BEGIN
SET @new_order1 = ' ORDER BY ' + @PrimaryKey + ' ASC'
SET @new_order2 = ' ORDER BY ' + @PrimaryKey + ' DESC'
END
IF @SortType = 2
BEGIN
SET @new_order1 = ' ORDER BY ' + @PrimaryKey + ' DESC'
SET @new_order2 = ' ORDER BY ' + @PrimaryKey + ' ASC'
END
END
ELSE
BEGIN
SET @new_order1 = ' ORDER BY ' + @strOrder
END
IF @SortType = 3 AND CHARINDEX(','+@PrimaryKey+' ',','+@strOrder)>0 ---多字段排序要加上主键
BEGIN
SET @new_order1 = ' ORDER BY ' + @strOrder
SET @new_order2 = @strOrder + ','
SET @new_order2 = REPLACE(REPLACE(@new_order2,'ASC,','{ASC},'),'DESC,','{DESC},')
SET @new_order2 = REPLACE(REPLACE(@new_order2,'{ASC},','DESC,'),'{DESC},','ASC,')
SET @new_order2 = ' ORDER BY ' + SUBSTRING(@new_order2,1,LEN(@new_order2)-1)
IF @FieldList <> '*'
BEGIN
SET @new_order3 = REPLACE(REPLACE(@strOrder + ',',' ASC,',','),' DESC,',',')
---- 得到排序字段的列表, 只剩字段, @new_order3的形式 filed1,filed2,filed3
-- SET @FieldList = @FieldList
PRINT @FieldList -- ,admid,admaccount
PRINT @new_order3
WHILE CHARINDEX(',',@new_order3)>0
---如果是多字段排序 ,出现 filed1,filed2,filed3的情况
BEGIN
-- PRINT CHARINDEX(SUBSTRING(','+@new_order3,1,CHARINDEX(',',@new_order3)),@FieldList+',')
Re:针对sql 2005优化的高性能分页存储过程 fuck103594223 2010-10-02 23:07
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROC [dbo].[PR_GetList_prikey_single]
/*
高效通用分页存储过程(双向检索) 2008.9.1 QQ:8112857
使用范围:适用于单一主键或存在唯一值列的表或视图
*/
@TableName VARCHAR(200), --表名
@FieldList VARCHAR(2000), --显示列名,如果是全部字段则为*
@PrimaryKey VARCHAR(100), --单一主键或唯一值键
@strWhere VARCHAR(2000), --查询条件 不含'where'字符,如id>10 and len(userid)>9
@strOrder VARCHAR(1000), --排序 不含'order by'字符,如id asc,userid desc,必须指定asc或desc
--注意当@SortType=3时生效,记住一定要在最后加上主键
@SortType INT, --排序规则 1:正序asc 2:倒序desc 3:多列排序方法
@RecorderCount INT, --记录总数 0:会返回总记录
@PageSize INT, --每页输出的记录数
@PageIndex INT, --当前页数
@TotalCount INT OUTPUT , --记返回总记录
@TotalPageCount INT OUTPUT --返回总页数
AS
SET NOCOUNT ON
IF ISNULL(@TotalCount,'') = '' SET @TotalCount = 0
IF @PageIndex< 1 SET @PageIndex= 1
IF @PageSize<1 SET @PageSize=20
SET @strOrder = RTRIM(LTRIM(@strOrder))
SET @PrimaryKey = RTRIM(LTRIM(@PrimaryKey))
SET @FieldList = REPLACE(RTRIM(LTRIM(@FieldList)),' ','')
WHILE CHARINDEX(', ',@strOrder) > 0 or CHARINDEX(' ,',@strOrder) > 0
BEGIN
SET @strOrder = REPLACE(@strOrder,', ',',')
SET @strOrder = REPLACE(@strOrder,' ,',',')
END
IF ISNULL(@TableName,'') = '' or ISNULL(@FieldList,'') = ''
or ISNULL(@PrimaryKey,'') = ''
or @SortType < 1 or @SortType >3
or @RecorderCount < 0 or @PageSize < 0 or @PageIndex < 0
BEGIN
PRINT('ERR_00')
RETURN
END
IF @SortType = 3
BEGIN
IF (UPPER(RIGHT(@strOrder,4))!=' ASC' AND UPPER(RIGHT(@strOrder,5))!=' DESC')
BEGIN PRINT('ERR_02') RETURN END
END
DECLARE @new_where1 VARCHAR(1000)
DECLARE @new_where2 VARCHAR(1000)
Re:针对sql 2005优化的高性能分页存储过程 fuck103594223 2010-10-02 23:07
哈哈,这种存储过程也好意思贴出来?????
鄙视了,用SQL2005的RowCount效率很低下的,哥们
看我现在用的这个存储过程
原来这是多年前发表的。
这是结合实际,难得一见的好文章。
比那些关起门来,成天“务虚”的文章强多了。
建议现在的人好好地读一读,想一想...
我也做类似的项目,其中一个就是根据报关单库的统计。
我说下我看你这篇文章的感受,以及我自己的一些经历。
1.SQL里面还是不要拼SQL的方式,虽然有时候有些统计很复杂,用拼sql的方式不方便后面的人维护,当然外包项目一个好处就是不用管维护。
2.临时表不一定比表变量好。我这是针对大量数据而言。海关项目内有很多个系统,数据库的配置也是五花八门,有些排序规则不同,甚至同个数据库的master库和业务库的排序规则都可能不一样。这样的话,用临时表就要考虑排序规则的问题了。我曾经遇过这个问题,尝试很多次包括制定临时表的排序规则,结果还是不行,最终是通过表变量解决的,因为表变量不用考虑排序规则。当然,数据量大的话,性能会怎么样?没测过不好说,而且影响的因素也很多。
3.涉及到很大的表,将数据load到中间载体(如临时表、表变量)再做处理会快很多。特别是涉及到联表查询、链接服务区之类的时候。有时候你根本没有权限访问远程数据库查看数据库的索引设计等,把需要的数据取到本地再处理、统计,速度很可能不在同个级别。
Re:一个IIS管理类 Y_F 2009-12-18 14:13
怎么没有看见对 .net formwork 版本的处理?????
Re:最近ASP.NET WAP开发的一些情况! qinxuren 2009-12-09 11:36
满天星<a href="<a target="_new" href="http://www.mtxshop.com/">健身器材</a>商城">http://www.mtxshop.com/">健身器材</a>商城</a>,经营<a href="<a target="_new" href="http://www.mtxshop.com/google/paobuji.htm">跑步机</a>">http://www.mtxshop.com/google/paobuji.htm">跑步机</a></a>,<a href="<a target="_new" href="http://www.mtxshop.com/">电动跑步机</a>">http://www.mtxshop.com/">电动跑步机</a></a>,专业销售上海红双喜、广州双鱼<a href="<a target="_new" href="http://www.mtxshop.com/google/ppq.htm">乒乓球台</a>">http://www.mtxshop.com/google/ppq.htm">乒乓球台</a></a>
<br>标准<a href="<a target="_new" href="http://www.mtxshop.com/google/taiqiuzhuo.htm">美式落袋台球桌</a>">http://www.mtxshop.com/google/taiqiuzhuo.htm">美式落袋台球桌</a></a>,中国名牌专业健身房会所专用<a href="<a target="_new" href="http://www.mtxshop.com/google/jsqc.htm">健身器材</a>">http://www.mtxshop.com/google/jsqc.htm">健身器材</a></a>,
<br>中国名牌专业健身房会所专用<a href="<a target="_new" href="http://www.mtxshop.com/google/jsfsb.htm">健身房设备</a>">http://www.mtxshop.com/google/jsfsb.htm">健身房设备</a></a>
Re:最近ASP.NET WAP开发的一些情况! Sonven 2009-10-12 15:20
http://www.cnblogs.com/sonven/archive/2009/10/12/asp_net_wap_developframework.html
什么都不用要就可以在vs里面开发wap网站
Re:扣除节假日高效算法 士大夫sdf 2009-08-23 08:44
是大方的是
Re:针对sql 2005优化的高性能分页存储过程 @and i wanna 3q 2009-08-15 23:54
@and i wanna 3q
呵呵,光放在嘴上说。有本事的自己别抄别人的,也发个帖子出来。做个通用的你认为高性能的搜索引擎出来。也让我们开开眼界...强烈鄙视,一群眼高手低的垃圾。
支持楼主~~~~~~~
Re:针对sql 2005优化的高性能分页存储过程 and i wanna 3q 2009-07-08 15:59
别的都还不错,就是当@isCount大于1的时候,where条件没了确实是个Bug。
我把你的代码改了一小下
set @sql = ' SELECT '+@Fields+ '
FROM (SELECT ROW_NUMBER() OVER(ORDER BY '+@Sort+') AS rownum,
'+@Fields+ '
FROM '+@Tables+' ' +@strFilter+') AS D
把条件+@strFilter加上了。
re: SQL 存储过程封装代码生成器 腿飞 2009-06-04 10:39
在生成存储过程的时候,能不能指定列,因为像ID这样的主键列一般不用,只有在更新的时候才能用到。
一直在看你们争吵,为啥就没人拿出个震的住的例子来呢?小弟也好膜拜一下哈。
实际测试: 孙茹苹 的最快,楼主是孙的2倍以上,
测试环境:
250万数据 SQLServer2005 其中ixuhao为主键 有个日期索引,以日期排序来查询
re: OWC使用技巧集 ZHENGHUA 2009-04-01 22:17
你好,我想问一个我遇到比较棘手的问题,
OWC控件在IE7中,各单元格跳转的时候,总会出现延迟,数字还好点,文字就惨不忍睹了。
在IE6中不会出现这种情况。
各种方法都试过了,望赐教!
zh_undead@yahoo.com.cn
谢谢LZ TAOBAO那里写的晕里雾里。
真垃圾TAOBAO
re: 阿里软件接口开发基础(淘宝网) C# edobnet 2009-02-20 19:40
函数都给你写好,还不会啊!
re: 最近ASP.NET WAP开发的一些情况! wadejiang 2009-02-13 14:49
我用RedirectToMobilePage函数做页面导航,在电脑上测试是没有问题 但在手机上就有问题了 有没有什么别的好办法,这个功能只能通过代码来判断,不能用link来实现(link跳转是没有问题的)
re: 阿里软件接口开发基础(淘宝网) C# lixiong xiongli 2009-02-06 12:55
老大您能不能再给一个 调用范例阿
这段时间正好想有这种类似的代码研究一下呢!谢谢楼主
re: 阿里软件接口开发基础(淘宝网) C# edobnet 2009-02-05 13:39
已经接供下载
re: 阿里软件接口开发基础(淘宝网) C# 海洋——海纳百川,有容乃大. 2009-02-05 13:36
有全部的解决方案吗?学习中......以前一直看PAYPAL的,今天看到淘宝的了,呵呵。
re: SQL 2005自动备份文件删除 Jason.Wei 2009-02-05 13:32
mark~
re: SQL 2005自动备份文件删除 海洋——海纳百川,有容乃大. 2009-02-05 13:29
Tips
re: 最近ASP.NET WAP开发的一些情况! SoftWareBoy 2009-01-19 16:50
笨笨的请问一下。
4.取消移动设备缓存:
Page.Response.Expires = -1;
Response.CacheControl = "Public";
是取消手机中浏览器的缓存 还是 服务器中的缓存那??
要是取消手机中浏览器的缓存的话,我在生成前台页面代码中,并没有看到因为在后台增加了这两行代码 所增加取消浏览器缓存的信息。
我做的是一个长江水位测量的项目,因此要求实时的数据,因为都是给领导看的,领导又不喜欢看表格,要求看曲线图,曲线图比较直观,而且必须从曲线图上得到每个时间的数据值,数据是每分钟一次,因此要求鼠标悬停或点上去的时候有数值显示,就像股票图一样,这在C/S模式下不是问题,但在B/S下比较困难,我在网上查了很多,但没有具体的代码可用。
画出的曲线图要求纵坐标显示水位值,横坐标显示时间值,要求在网页上显示。
项目的开发平台是vs2005,语言是c#,恳请有经验者与我联系或留下联系方法,万分感谢!
我的联系方法 fangjun953322@sina.com
re: 最近ASP.NET WAP开发的一些情况! wadejiang 2008-11-19 11:14
很好 对我很有帮助,楼主的好人。
re: SQL 某一列是不是关键字的判断, 菜鸟hu 2008-09-23 23:10
syscolumns的status 为128 表示该字段允许为空
re: VS.Net 的Macros是一个好东西, boostbob 2008-09-04 17:54
--引用--------------------------------------------------
Ninputer: PS. 你可以用With语句将这堆DTE.ActiveDocument.Selection全部简化掉,还可以静态导入DateTime,这样你的宏就可以整洁100倍。
--------------------------------------------------------
对头。
.net中的SendKeys类实际上最终调用的是SetKeyboardState这个API(如果通过查看.net源代码得知),而这个API的作用是向“当前线程”的输入状态表复制键盘键位状态数组。SendKeys非常实用方便,不过功能比不上SendInput和keybd_event两个API函数。