常用的sql函数

常用SQL字符串函数

 

常用SQL字符串函数
今天一同学在群里问我一个问题。

问:
请教一个SQL 2000 SEVER问题:
select * from itemcode
where code like '40%'
如何让code=40101001
变成code= 401-01-001
目前有666个CODE是类似40101001
用什么语句能把它变成401-01-001

答:
update itemcode set code=replace(code,left(code,8),left(code,3)+'-'+substring(code,4,2)+'-'+substring(code,6,3)) where code like '40%'

问:
replace(code,left(code,8),left(code,3)+'-'+substring(code,4,2)+'-'+substring(code,6,3))
是什么意思?

答:
code=123456789 做例子
a = left(code,8) = 12345678
b = left(code,3) = 123
c = substring(code,4,2) = 45
d = substring(code,6,3) = 678
e = b+'-'+c+'-'+e = 123-45-678
f = replace(code,a,e) = 123-45-6789
配合下边的来看,应该能明白了
1
left(code,8) 取前8
2
substring(code,4,2) 从第4位开始取2
3
+ 是字符串连接符
4
replace(a,str1,str2) a中的str1替换为str2

几问几答下来,我就想着要整理一份完整的SQL字符串函数出来,借以学习和方便以后查询。

SQL字符串函数


字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于CHARVARCHAR BINARY、 和VARBINARY 数据类型以及可以隐式转换为CHAR VARCHAR的数据类型。可以在SELECT 语句的SELECT WHERE 子句以及表达式中使用字符串函数。常用的字符串函数有:

一、字符转换函数
1
ASCII()
返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。



2
CHAR()
ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL



3
LOWER()UPPER()
LOWER()
将字符串全部转为小写;UPPER()将字符串全部转为大写。



4
STR()
把数值型数据转换为字符型数据。
STR (<float_expression>[
length[ <decimal>]])
length
指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10 decimal 缺省值为0
length 或者decimal 为负值时,返回NULL
length 小于小数点左边(包括符号位)的位数时,返回length *
先服从length ,再取decimal
当返回的字符串位数小于length ,左边补足空格。



二、去空格函数
1
LTRIM() 把字符串头部的空格去掉。

2
RTRIM() 把字符串尾部的空格去掉。

三、取子串函数
1
left()
LEFT (<character_expression>
<integer_expression>)
返回character_expression 左起 integer_expression 个字符。

2
RIGHT()
RIGHT (<character_expression>
<integer_expression>)
返回character_expression 右起 integer_expression 个字符。

3
SUBSTRING()
SUBSTRING (<expression>
<starting_ position> length)
返回从字符串左边第starting_ position 个字符起length个字符的部分。

四、字符串比较函数
1
CHARINDEX()
返回字符串中某个指定的子串出现的开始位置。
CHARINDEX (<’substring_expression’>
<expression>)
其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。
此函数不能用于TEXT IMAGE 数据类型。



2
PATINDEX()
返回字符串中某个指定的子串出现的开始位置。
PATINDEX (<’%substring _expression%’>
<column_ name>)其中子串表达式前后必须有百分号“%”否则返回值为0
CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR VARCHAR TEXT 数据类型。

五、字符串操作函数
1
QUOTENAME()
返回被特定字符括起来的字符串。
QUOTENAME (<’character_expression’>[
quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”



2
REPLICATE()
返回一个重复character_expression 指定次数的字符串。
REPLICATE (character_expression integer_expression)
如果integer_expression 值为负值,则返回NULL

3
REVERSE()
将指定的字符串的字符排列顺序颠倒。
REVERSE (<character_expression>)
其中character_expression 可以是字符串、常数或一个列的值。

4
REPLACE()
返回被替换了指定子串的字符串。
REPLACE (<string_expression1>
<string_expression2> <string_expression3>) string_expression3 替换在string_expression1 中的子串string_expression2

4
SPACE()
返回一个有指定长度的空白字符串。
SPACE (<integer_expression>)
如果integer_expression 值为负值,则返回NULL

5
STUFF()
用另一子串替换字符串指定位置、长度的子串。
STUFF (<character_expression1>
<start_ position> <length><character_expression2>)
如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则返回NULL 值。
如果length 长度大于character_expression1 start_ position 以右的长度,则character_expression1 只保留首字符。



六、数据类型转换函数
1
CAST()
CAST (<expression> AS <data_ type>[ length ])

2
CONVERT()
CONVERT (<data_ type>[ length ]
<expression> [ style])

1
data_typeSQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。
2
length用于指定数据的长度,缺省值为30
3
)把CHARVARCHAR类型转换为诸如INTSAMLLINT这样的INTEGER类型、结果必须是带正号或负号的数值。
4
TEXT类型到CHARVARCHAR类型转换最多为8000个字符,即CHARVARCHAR数据类型是最大长度。
5
IMAGE类型存储的数据转换到BINARYVARBINARY类型,最多为8000个字符。
6
)把整数值转换为MONEYSMALLMONEY类型,按定义的国家的货币单位来处理,如人民币、美元、英镑等。
7
BIT类型的转换把非零值转换为1,并仍以BIT类型存储。
8
)试图转换到不同长度的数据类型,会截短转换值并在转换值后显示“+”,以标识发生了这种截断。
9
)用CONVERT() 函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。

 



七、日期函数
1
day(date_expression)
返回date_expression中的日期值

2
month(date_expression)
返回date_expression中的月份值

3
year(date_expression)
返回date_expression中的年份值

4
DATEADD()
DATEADD (<datepart>
<number> <date>)
返回指定日期date 加上指定的额外日期间隔number 产生的新日期。参数“datepart” 取值如下:



5
DATEDIFF()
DATEDIFF (<datepart>
<date1> <date2>)
返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。

6
DATENAME()
DATENAME (<datepart>
<date>)
以字符串的形式返回日期的指定部分此部分。由datepart 来指定。

7
DATEPART()
DATEPART (<datepart>
<date>)
以整数值的形式返回日期的指定部分。此部分由datepart 来指定。
DATEPART (dd
date) 等同于DAY (date)
DATEPART (mm
date) 等同于MONTH (date)
DATEPART (yy
date) 等同于YEAR (date)

8
GETDATE()
DATETIME 的缺省格式返回系统当前的日期和时间

 

 

添加评论

 

10:22

 | 

固定链接 | 引用通告 (0) | 记录它 | SQL

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!152.entry

 

 

 

 

 

 

 

3 29

 

 

 

Thread

 

Thread.Start():启动线程的执行;

  Thread.Suspend():挂起线程,或者如果线程已挂起,则不起作用;

  Thread.Resume():继续已挂起的线程;

  Thread.Interrupt():中止处于 Wait或者Sleep或者Join 线程状态的线程;

  Thread.Join():阻塞调用线程,直到某个线程终止时为止

  Thread.Sleep():将当前线程阻塞指定的毫秒数;

  Thread.Abort():以开始终止此线程的过程。如果线程已经在终止,则不能通过Thread.Start()来启动线程。

 

 

添加评论

 

14:38

 | 

固定链接 | 引用通告 (0) | 记录它 | 计算机与 Internet

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!151.entry

 

 

 

 

 

 

 

 

3 28

 

 

 

PsP

 

http://www.cngba.com/read-htm-tid-165055-fpage-1.html

 

 

添加评论

 

13:46

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!150.entry

 

 

 

 

 

 

 

3 27

 

 

 

c#贴士

 

回车换行“/r/n”

 

 

添加评论

 

10:23

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!149.entry

 

 

 

 

 

 

 

 

3 20

 

 

 

有用的网址

 

韩国网址大全http://www.krurl.com/

图库 http://www.tucoo.com/

编程动网http://down.dvbbs.net/

源码下载:http://www.codepub.com/index.html

               http://www.netbei.com/Article/php/

              http://www.dwww.cn/sub_class.asp?id=11&page=1

            

              http://www.ljdn.com/AspxOS_bbs.aspx?A=D1_4&TD=568&NP=0

            http://huolx.t2008.com/index.asp

http://www.99inf.net/Article/netjc/csharpl/2005-05-24/21018.html

 

 

添加评论

 

14:50

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!148.entry

 

 

 

 

 

 

 

3 16

 

 

 

aspx小贴士

 

http://www.dwww.cn/sub_class.asp?id=11&page=1

 

 

添加评论

 

17:08

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!147.entry

 

 

 

 

 

 

 

 

asp.net中容易犯的错误

 

1. 使用server side includeASPX引入共同的页面构图.
ASP.NET的机制下, 应使用ASCX(web user control)来实现. ASCX提供了更多可控制接口. 并且更重要的是, ASCX是一个类. 一个实实在在的类. 可以全面控制它.

  2.不使用web.config
  web.config提供了非常丰富的配置管理接口. 是一个应用程序最核心的部分. 但是很多人的web.config往往是空的. 或者就从来没有修改过.

web.config 主要是保留服务器的配置的和全局的信息,这个在Telligent Systems forums的代码中大大的体现:
1
。引入名称空间信息
2
。数据访问、文件上传目录,资源文件目录等全局信息

  3.使用Response.Write向前端输出消息
  ASP.NET平台下的ResponseASPResponse有很大的不同. 虽然表示同一含义, 但用法上已经大不相同. Response.Write的内容只会输出到页的最前端. 向前端输出消息的正确方法是使用PlaceHolder.
~~~~~~~~~~~
这点说不上是任何技巧,熟悉HTML的人都应该知道这样做


  4.使用一系列session管理用户连接状态
  这种方法在ASP里被滥用. ASP.NET环境下, 正确的做法应该是设计一个类. 结构化地保存数据. 将对session或者cookie的访问封装起来.
~~~~~~~~~~~~~~
意思应该是说把用户这个对象保存起来吧,这个的确应该如此

  5.使用session验证身份
  这几乎是通病. ASP.NET提供了一组用于用户身份验证的API. 类型是forms验证或者windows验证. 这一点quick start有一节讲解得很清楚. 可以绝大部分人还是依靠给session赋值来保持用户身份验证状态.

~~~~~~~~~~~~~~
很多人的确是这样使用,自己也有这样的毛病,应该改改

  6.使用Response.Redirect重定向页
  这一点在必要的时候可以使用. 但不可滥用. 事实证明滥用重定向将导致逻辑上的严重混乱. 这是在以页为程序单元的时候的做法. 使用front controller模式将使用户的操作逻辑集中起来]

~~~~~~~~~~~~~
response.redirect
只是页面跳转而已

  7.使用太多ASPX
  ASP环境下的程序单元只有*.asp, ASP.NET可不是这样, 还有后端的类库, ASCX等等. 应将业务逻辑分别集中在不同的单元, 而不应该一项操作使用一个ASPX. 更多时候ASPX将做为ASCX或者custom control的容器而管理页内逻辑. ASPX重用ASCX的同时, ASPX也做为统一的页构图重用.

  8.在多个逻辑单元之间复制代码并修改相应逻辑
重用. 重用. 重用. 处理此类问题的原则是不出现任何相同或相似的过程. 如果你用上面的方法, 一旦出现重大逻辑更改, 带来的结果将是灾难性的.
~~~~~~~~~~~~~~~~~~~
增加代码复用性,就应该少复制代码

  9.害怕使用DataSet.
  很多人被DataSet吓坏了. 认为肯定影响性能. 但连最初的尝试都不敢. 他们总认为他们的产品一定重大, 设计上应该慎重”. 他们往往使用ArrayList或者设计低级的类来保存集合数据. 进行艰难的数据倒入工作.
~~~~~~~~~~~~~~~~~~~~~~~
自己设置的类也是有自己的好处的,如果数据集合之后没有联系,那直接用dataTable即可。

  10.性能过多注意.
  对ASP.NET ViewState的机制特别不满. 或者总是挖空心思迫害人家. 反倒把自己弄得很累. 如果在对付ViewState的同时多注意少连几次数据库也许更文明些.

~~~~~~~~~~~~~~~
如果开发使用人数比较少的系统,性能考虑倒不是主要,因为一般的服务器都可以伺候比较多的人数,如果性能可能成为系统瓶颈,那就应该大大的优化,少用服务器控件

  11.应用程序根目录很乱.
  ASP.NET是开发项目. 不是网站. 应该把不同的资源分类放置. 例如把所有静态资源(样式表, 脚本, 图像)组织到一起. 甚至可以写一组API来管理他们. ASPX应该放在一起. ASCX应该放在一起. .*.cs? 应该把他们放到另外一个project.
~~~~~~~~~~~~~
这个同意,至少数据访问层要做为单独的类库。

  12.不厌其烦的写访问数据库的过程
应该把这工作交给DataAccess Application Block. 你自己还要开关connection, 何苦呢.

  13.自己写的东西最靠得住.
  事实往往正好相反. 多注意使用人家写好的产品. 又不收你钱, 何苦那么爱面子呢.

  14. 胡乱命名ASPX文件名
  这是最让人痛苦的了. ASPX文件名不仅需要容易识别. 还应该遵循一定规则. 因为behind每个ASPX都会有一个同名的类, 想象一下, 多难受. 另外大部分人不知道管理自己的项目的name space. 让人好像看到一本帐一样.

  15.从来不作继承或派生
  一些具有相同行为的类, 应该从公共的基类派生出来. 实际意义上, 我们的ASPX应该有一个基类PageBase. 因为总有一些公共的特性需要抽象出来.

  16.property
  他们的类(ASPX所对应)里只有private method. 不公开自己的任何秘密. 可以这一定是JAVA的遗老干的事.

  17. ASCX
  不用说, 他还没学会ASP.NET

  18.使用DreamWeaver““ASPX
  这批人是美工. 甚至有一些人在非常陶醉地讨论如何更好地整合“ DreamWeaverVisual Studio.

  19.只熟悉System.Web.UI.WebControlSystem.Data.SqlClient应该还有一些值得熟悉的类库.

  20.零注释
  这些都是心里很明白的快手. 一任IDE生成的缺省注释横在那里不管.

  21.零事件
  对事件驱动一无所知. 只知道在Page_Load()里写过程. 或者双击一个按钮写Xxx_Clock()过程. 在他们的程序里看不到eventdelegate.

 

 

添加评论

 

16:56

 | 

固定链接 | 引用通告 (0) | 记录它 | Asp编程

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!146.entry

 

 

 

 

 

 

 

Utf-8Gb2312乱码问题的终结

 

研究好多天了,也试过好多办法了,总结出目前发现最好的方法:
先说一下基本的东西:
<%@ codepage=65001%>UTF-8
<%@ codepage=936%>
简体中文
<%@ codepage=950%>
繁体中文
<%@ codepage=437 %>
美国/加拿大英语
<%@ codepage=932 %>
日文
<%@ codepage=949 %>
韩文
<%@ codepage=866 %>
俄文

codepage
指定了IIS按什么编码读取传递过来的串串(表单提交,地址栏传递等)。

出乱码的原因也就是网站要整合的时候模块编码不一样引起的。
就像我的博客一样,整合的时候都会出这个问题,因为BLOGUtf-8的,
近来很多网友都在为这个问题咨询,我尝试了很多种方法。
最方便的方法如下:
不要转换任何模块网页的编码该utf-8的还是utf-8,该Gb22312的还是Gb2312
Utf-8模块的包文件(如conn.asp,但是要注意conn.asp必须是在第一行调用)最前面加上
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
GB2312模块的包文件最前面加上
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Session.CodePage=936%>
其他编码的类推。

 

 

添加评论

 

15:58

 | 

固定链接 | 引用通告 (0) | 记录它 | Asp编程

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!145.entry

 

 

 

 

 

 

 

 

3 2

 

 

 

Ajax (Asynchronous javaScript Xml)

 

使用XHTMLCSS标准化呈现;
使用DOM实现动态显示和交互;
使用XMLXSLT进行数据交换与处理;
使用XMLHttpRequest进行异步数据读取;
最后用JavaScript绑定和处理所有数据;

 

为什么用Ajax

  就我自己而言,我是因为想让web即时通客户端不受不断刷新页面的烦扰。
  1、通过适当的Ajax应用达到更好的用户体验;2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的

 

 

添加评论

 

12:09

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!144.entry

 

 

 

 

 

 

 

2 21

 

 

 

sessioncookies的区别

 

session是储存在服务器内存上
cookies
是用文本形式储存在客户机上.

session
安全性比cookies高,cookies可能会泄露数据.
session
占用服务器资源
cookies
不占用服务器资源。。。。。。

 

 

添加评论

 

10:41

 | 

固定链接 | 引用通告 (0) | 记录它 | Asp编程

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!143.entry

 

 

 

 

 

 

 

 

2 17

 

 

 

user=replace(trim(userid),"'","")

 

replace(trim(userid),"'","")
那句话的意思就是
“‘”这个东东。替换成空格

 

REPLACE(old_text,start_num,num_chars,new_text)

REPLACEB(old_text,start_num,num_bytes,new_text)

Old_text  
是要替换其部分字符的文本。

Start_num  
是要用 new_text 替换的 old_text 中字符的位置。

Num_chars  
是希望
REPLACE 使用 new_text 替换 old_text 中字符的个数。

Num_bytes  
是希望
REPLACE 使用 new_text 替换 old_text 中字节的个数。

New_text  
是要用于替换 old_text 中字符的文本。

 

 

添加评论

 

14:06

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!142.entry

 

 

 

 

 

 

 

缓存清除

 

<%
option explicit

Response.Buffer = True
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"

%>

 

 

添加评论

 

13:31

 | 

固定链接 | 引用通告 (0) | 记录它 | Asp编程

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!141.entry

 

 

 

 

 

 

 

 

光标停滞指定位置

 

<SCRIPT>
 document.manage.login_name.focus();
</SCRIPT>

 

login_name//指定位置

 

 

添加评论

 

13:30

 | 

固定链接 | 引用通告 (0) | 记录它 | Asp编程

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!140.entry

 

 

 

 

 

 

 

1 9

 

 

 

http://www.idmt.com.cn/sh/training/course_maya.htm

 

诺宝教程

 

 

添加评论

 

16:47

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!137.entry

 

 

 

 

 

 

 

 

Rss 2.0

 

RSS 2.0 规范
译者:Tony Qu

原文地址:http://blogs.law.harvard.edu/tech/rss

什么是RSS
    RSS
是一种网页内容联合格式(web content sydication format)。
   
它的名字是Really Simple Syndication的缩写。
    RSS
XML的一种。所有的RSS文档都遵循XML 1.0规范,该规范发布在W 3C 网站上。
    
   
在一个RSS文档的开头是一个<rss>节点和一个规定的属性version,该属性规定了该文档将以RSS的哪个版本表示。如果该文档以这个规范来表示,那么它的version属性就必须等于2.0
    
   
<rss>节点的下一级是一个独立的<channel>节点,该节点包含关于channel的信息和内容。
    
关于本文档    
   
该文档是在2002年秋天撰写的,当时的RSS版本为 2.0.1
   
它包含从RSS 0.91规范(2000)开始的所有的修改和添加,以及包含在RSS 0.92200012月)和RSS 0.9420028月)中的新的特性。
   
必需的频道节点
    下面有一份必须包含的频道(channel)节点的列表,每一个都有一个简单的描述、一个例子、应该出现的位置和更详细描述的超链接。
   

元素

描述

范例

title

频道(channel)名称。它可以告诉别人如何访问你的服务。如果你有一个与你的RSS文件内容一致的HTML网站,你的title元素值应该与你的网站的标题相同。

GoUpstate.com News Headings

link

响应该频道的网站的URL

http://www.goupstate.com/

description

关于该频道的描述

The latest news from GoUpstate.com, a Spartanburg Herald-Joural Web Site


可选的频道元素
   
下面是可选的频道元素列表
 

节点

描述

范例

language

 使用的语言。这允许聚合器对所有的意大利语站点分组。

en-us

copyright

版权声明

 Copyright 2002, Spartanburg Herald-Journal

managingEditor

内容负责人的Email

geo@herald.com (George Matesky)

webMaster

技术人员的Email

betty@herald.com (Betty Guernsey)

pubDate

内容的发布时间

Sat, 07 Sep 2002 00:00:01 GMT

lastBuildDate

最后更新时间

Sat, 07 Sep 2002 09:42:31 GMT

category

指定该频道所属的一个或多个分类。遵循与itemcategory元素相同的规则。

<category>Newspapers</category>

generator

生成该频道的程序名称

MightyInHouse Content System v2.3

docs

指向rss格式文档的url地址?

http://blogs.law.harvard.edu/tech/rss

cloud

允许所有进程注册一个cloud用于获得频道的更新通知,并为rss种子实现一个轻量级的发布订阅协议。

<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>

ttl

ttlTime to live的缩写。它指示cache的有效保存时间。

<ttl>60</ttl>

image

与频道一起显示的图片地址

 

rating

该频道的统计图片地址

 

textInput

指定一个textbox与该频道一起显示

 

skipHours

告诉使用者哪些时段是可以忽略的

 

skipDays

告诉使用着哪些天是可以忽略的

 


<channel>子节点<image>
<image>
是一个可选的<channel>子节点,该节点包含三个必需的子元素和三个可选的子元素。
<url>
GIFJPEGPNG图像文件的URL地址,该图像代表整个频道
<title>
用于描述上面的图像,等同于HTML语言中的<img>alt属性
<link>
是要连接的站点的url,当显示频道时,图像的连接指向该站点。
<title>
<link>应该与频道的<title><link>有相同的值
可选的节点包括<width><height>,它们是数字类型,指定图像的宽度和高度,单位为像素
<description>
就是linkTITLE属性中文本,它将在调用网页时显示出来。

图像宽度的最大值为144,默认值为88
图像高度的最大值为400,默认值为31

<channel>子节点<cloud>
<cloud>
是一个可选的<channel>子节点。
它指定一个可以支持rssCloud接口的web服务,rssCloud接口可以用HTTP-POSTXML-RPCSOAP1.1实现。
它的目的是允许通知注册为cloud的进程频道被更新,从而实现一个轻量级的发布订阅协议。

<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure= "myCloud.rssPleaseNotify" protocol="xml-rpc" />

在这个例子中,为了请求频道通知,你需要发送一个XML-RPC消息到rpc.sys.com80端口,路径为/RPC2。调用的过程为myCloud.rssPleaseNotify

<channel>子节点<ttl>
<ttl>
是一个可选的<channel>子节点。
ttl
time to live的缩写。它表示频道在被刷新前应该被缓存的时间。这使得rss源可以被一个支持文件共享的网络所管理,例如Gnutella
例如:<ttl>60</ttl>

<channel>子节点<textInput>
<textInput><channel>的可选的子节点,<textInput>包含四个子节点。
<title>--
提交按钮的标签
<description>--
该文本输入区的描述
<name>--
文本输入区的名称
<link>--
处理文本输入的CGI脚本的URL
使用<textInput>的目的有些神秘(?)。你可以用它提供一个搜索引擎输入框,或让读者提供反馈信息。许多聚合器忽略该节点。

<item>的节点
一个频道可以包含许多项目(item)节点。一个项目可以代表一个故事——比如说一份报纸或杂志上的故事,如果是这样的话,那么项目的描述则是故事的概要,项目的链接则指向整个故事的存放位置。项目的所有节点都是可选的,但是至少要包含至少一个标题(title)和描述(description)

节点

描述

范例

title

item的标题

Venice Film Festival Tries to Quit Sinking

link

itemURL

 http://www.nytimes.com/ 2002/09/07 /movies/07FEST.html

description

item概要

Some of the most heated chatter at the Venice Film Festival this week was about the way that the arrival of the stars at the Palazzo del Cinema was being staged.

author

作者的email地址

oprah@oxygen.net

category

item可以包含在一个或多个分类中

Simpsons Characters

comments

item相关的评论的地址

http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290

enclosure

附加的媒体对象

 

guid

可以唯一确定item的字符串

http://inessential.com/ 2002/09/01 .php#a2

pubDate

item发布的时间

Sun, 19 May 2002 15:21:36 GMT

source

rss频道来源

Quotes of the Day


<item>子节点<source>
<source>
<item>的可选节点。
它的值是item来自的rss频道的名称,从itemtitle衍生而来。它有一个必须包含的属性url, 该属性链接到XML序列化源。

<source url="http://static.userland.com/tomalak/links2.xml">Tomalak's Realm</source>

该节点的作用是提高连接的声望,进一步推广新闻项目的源头。它可以用在聚合器的Post命令中。当从聚合器通过webblog访问一个item时,<source>能够自动被生成。

<item>子节点<enclosure>
<enclosure><item>的可选节点。
它有三个必要的属性。url属性指示enclosure的位置,length指出它的字节大小,type属性指出它的标准MIME类型
url
必须为一个http url

<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />


<item>子节点<category>
<category><item>的可选节点。
它有一个可选属性或域,该属性是一个用来定义分类法的字符串。
该节点的值是一个正斜杠分割的字符串,它用来在指定的分类法中识别一个分级位置(hierarchic  location)。处理器可以为分类的识别建立会话。(Processors may establish conventions for the interpretation of categories)下面有两个例子:

<category>Grateful Dead</category>
<category domain="http://www.fool.com/cusips">MSFT</category>

你可以根据你的需要为不同的域(domain)包含很多category节点,并且可以在相同域的不同部分拥有一个前后参照的item

<item>子节点<pubDate>
<pubDate><item>的可选节点。
它的值是item发布的日期。如果它是一个没有到达的日期,聚合器在日期到达之前可以选择不显示该item

<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>


<item>子节点<guid>
<guid><item>的可选节点。
guid
globally unique identifier的缩写。它是一个可以唯一识别item的字符串。当item发布之后,聚合器可以选择使用该字符串判断该item是否是新的。
<guid>http://some.server.com/weblogItem3207</guid>
guid
没有特定的语法规则,聚合器必须将他们看作一个字符串。生成具有唯一性的字符串guid取决于种子的源头。
如果guid节点有isPermaLink属性,并且值为真,读取器就会认为它是itempermalinkpermalink是一个可在web浏览器中打开的url链接,它指向<item>节点所描述的全部item
<guid isPermaLink="true">http://inessential.com/ 2002/09/01 .php#a2</guid>

isPermaLink是可选属性,默认值为真。如果值为假,guid将不会被认为是一个url或指向任何对象的url

<item>子节点<comment>
 <comment><item>的可选节点。
如果出现,它指向该item评论的url
<comments>http://rateyourmusic.com/yaccs/commentsn/blogId=705245&amp;itemId=271</comments>

<item>子节点<author>
 <author><item>的可选节点。
它是item的作者的email。对于通过rss传播的报纸和杂志,作者可能是写该item所描述的文章的人。对于聚集型webblogs,作者可能不是责任编辑或站长。对于个人维护的webblog,忽略<author>节点是有意义的。
<author>lawyer@boyer.net (Lawyer Boyer)</author>

 

 

添加评论

 

11:35

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!136.entry

 

 

 

 

 

 

 

Rss2.0

 

RSS 2.0规范

RSS 2.0规范

  RSS Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Site Summary的缩写,1.02.0走的是两个体系)
  RSS 基于XML,所有的 RSS 必须遵循w 3c 网站上公布的XML 1.0 规范。
  在一个RSS文档中,根元素是<rss>,带有一个必备属性version,用以指明该文档遵循的rss规范,如果rss文档遵循本规范,则version值必须是2.0
  <rss>元素只有一个子元素,包含关于频道的一些信息。频道(channel)是整个blog,项(item)指一篇文章或日志(也有称这为post)

RSS2.0元素channel的子元素列表

 

元素(Element)

描述(Description)

值域

重要性

举例(Example)

title

频道名称

 

必备

GoUpstate.com News Headlines

link

频道的URL

 

必备

http://www.goupstate.com/

Description

频道的描述

 

必备

The latest news from GoUpstate.com, a Spartanburg Herald-Journal Web site.

 

 

 

 

 

language

频道文章所用语言,

可用netscapew 3c 推荐的列表

可选

en-us

copyright

频道内容的版权说明

 

可选

Copyright 2002, Spartanburg Herald-Journal

managingEditor

责任编辑的email

 

可选

geo@herald.com (George Matesky)

webMaster

负责频道技术事务的网站管理员email

 

可选

betty@herald.com (Betty Guernsey)

pubDate

频道内容发布日期,格式遵循RFC822格式(年份可为2们或4位)

 

可选

Sat, 07 Sep 2002 00:00:01 GMT

lastBuildDate

频道内容最后的修改日期

 

可选

Sat, 07 Sep 2002 09:42:31 GMT

category

指定频道所属的一个或几个类别

 

可选

<category>Newspapers</category>

generator

生成该频道的程序名

 

可选

MightyInHouse Content System v2.3

docs

指向该RSS文件所用格式说明的URL

 

可选

http://blogs.law.harvard.edu/tech/rss

cloud

Allows processes to register with a cloud to be notified of updates to the channel, implementing a lightweight publish-subscribe protocol for RSS feeds. More info here.

 

可选

<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>

ttl

有效期,用以指明该频道可被缓存的最长时间

分钟为单位

可选

<ttl>60</ttl>

image

指定一个 GIFJPEGPNG图片,用以与频道一起显示

 

可选

 

rating

这个频道的分级(主要指成人、限制、儿童等)

 

可选

 

textInput

指定一个text输入框供用户输入,具体信息及功能未定。

 

可选

 

skipHours

提示新闻聚合器,那些小时时段它可以跳过。

 

可选

 

skipDays

提示新闻聚合器,那些天它可以跳过。

 

可选

 

RSS2.0元素channel的子元素image的子元素列表

 

元素(Element)

描述(Description)

值域

重要性

举例(Example)

url

图片的url

 

必备

 

title

图片的标题,用于httpalt属性

 

必备

 

link

网站的url(实际中常以频道的url代替)

 

必备

 

width

图片的宽度(象素为单位)

最大144,默认88

可选

 

height

图片的高度(象素为单位)

最大400,默认31

可选

 

description

用于linktitle属性

 

可选

 

 

RSS2.0元素channel的子元素cloud的子元素列表

 

元素(Element)

描述(Description)

值域

重要性

举例(Example)

domain

Cloud程序所在机器的域名或IP地址

 

 

radio.xmlstoragesystem.com

port

访问clound程序所通过的端口

 

 

80

path

程序所在路径(不一定是真实路径)

 

 

/RPC2

registerProcedure

注册的可提供的服务或过程

 

 

xmlStorageSystem.rssPleaseNotify

protocol

协议

xml-rpc, soap , http-post 之一

 

xml-rpc

 

RSS2.0元素channel的子元素textInput的子元素列表

 

元素(Element)

描述(Description)

值域

重要性

举例(Example)

title

Submit按钮的标签

 

必备

 

description

解释text输入区

 

必备

 

name

Text area对象的名字

 

必备

 

link

处理提交的请求的cgi程序

 

必备

 

 

 

添加评论

 

11:30

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!135.entry

 

 

 

 

 

 

 

 

12 15

 

 

 

GUID

 

描述 CLSID

管理工具 {D20EA4E1-3957-11d2-A40B -0C 5020524153}

 公文包 {85BBD92O -42A 0-1O69-A2E4-08002B30309D}

 控制面板 {21EC2O2O-3AEA-1O69-A2DD-08002b30309d}

字体 {D20EA4E1-3957-11d2-A40B -0C 5020524152}

历史记录 {FF393560-C 2A 7-11CF-BFF4-444553540000}

收件箱 {00020D75-0000-0000-C000-000000000046}

Microsoft网络 {00028B00-0000-0000-C000-000000000046}

我的电脑 {20D04FE0-3AEA-1069-A2D8-08002B30309D}

我的文档 {450D8FBA-AD25-11D0 -98A 8-0800361B1103}

网上邻居 { 1f 4de370-d627-11d1-ba 4f -00a 0c 91eedba}

网络连接 {7007ACC7-3202-11D1-AAD2-00805FC1270E}

打印机和传真 { 2227A 280-3AEA-1069-A2DE-08002B30309D}

程序文件夹 {7be9d 83c -a729-4d97-b 5a 7-1b 7313c 39e 0a }

 回收站 {645FF040-5081-101B -9F 08-00AA 002F 954E}

扫描仪和照相机 {E211B736-43FD-11D1-9EFB -0000F 8757FCD}

 任务计划 {D6277990 -4C 6A -11CF-8D87-00AA 0060F 5BF}

开始菜单文件夹 {48e7caab-b918-4e58-a94d -505519c 795dc}

Internet临时文件 {7BD29E00 -76C 1-11CF-9DD0 -00A 0C 9034933}

Web文件夹 {BDEADF00-C265-11d0-BCED -00A 0C 90AB 50F }

 

 

添加评论

 

17:56

 | 

固定链接 | 引用通告 (0) | 记录它

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!134.entry

 

 

 

 

 

 

 

11 18

 

 

 

自由定制文件夹选择对话框

 

定制,文件夹选择对话框,SHBrowseForFolder,文件夹选择,目录选择

1API概述
   
使用WindowsSHBrowseForFolder可以实现目录选择功能。
   
该函数的参数也实现如下:见MSDN
    Displays a dialog box that enables the user to select a shell folder.
   
LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFO lpbi);
  Returns a pointer to an ITEMIDLIST structure (PIDL) that specifies the location of the selected folder relative to the root of the namespace. If the user chooses the Cancel button in the dialog box, the return value is NULL.

2、使用
     #define REMOVE_HEIGHT 28
     //  
回调函数的声明
     int CALLBACK _SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);

    BOOL SelectFolder(CString& lpstrFolderPos, CString strInitPosition)
    {
        BOOL          bRes = FALSE;

         char          lpszPath[MAX_PATH];
         LPMALLOC      lpMalloc;
 
        BROWSEINFO    sInfo;
 
        LPITEMIDLIST lpidlBrowse;
 
 
        if (::SHGetMalloc(&lpMalloc) != NOERROR)
  
           return FALSE;
 
 
        if (strInitFolder != _T(""))
 
        {
  
           if(strInitFolder.Right(1) == _T("//"))                           // 删除尾部的"//"
   
          strInitFolder = strInitFolder.Left(strInitFolder.GetLength() - 1);
 
        }
 
 
        ::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
 
        sInfo.pidlRoot   = 0;
 
        sInfo.pszDisplayName = lpszPath;
 
        sInfo.lpszTitle   = _T("请选择您需要的目的文件夹:");
 
        sInfo.ulFlags   = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_USENEWUI;

         sInfo.lpfn     = _SHBrowseForFolderCallbackProc;
 
        sInfo.lParam   = (LPARAM)strInitFolder.GetBuffer(0);

         // 显示文件夹选择对话框
 
        lpidlBrowse = ::SHBrowseForFolder(&sInfo);  
 
 
        if (lpidlBrowse != NULL)
 
        {
  
           // 取得文件夹名
  
           if (::SHGetPathFromIDList(lpidlBrowse,lpszPath))   
  
           {
   
              lpstrFolder = _T("");
   
              lpstrFolder = lpszPath;
   
   
              if(lpstrFolder != "")
   
              {
    
                 if(lpstrFolder.Right(1) != _T("//"))
     
                    lpstrFolder += _T("//");               //在末尾时附加"//"
   
              }
  
           }
  
  
           bRes = TRUE;
 
        }
 
 
        if(lpidlBrowse != NULL)
 
        {
  
           ::CoTaskMemFree(lpidlBrowse);
 
        }
 
 
        lpMalloc->Release();
 
 
        return bRes;
    }


   
下面是回调函数,以及函数的处理
    int CALLBACK _SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
    {
        static HWND hWndEdit = NULL;
         CString strDir;

 
        switch (uMsg)
 
        {
 
        case BFFM_INITIALIZED:
  
           {
                 ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
   
                 CRect rect;   
                 HWND  hChild = GetWindow(hwnd, GW_CHILD);
                 while (hChild) 
                 {
    
                 TCHAR szClass[256];
    
                 GetClassName(hChild, szClass, 255);
                   //  
如果是中间的树目录控件,使可以随窗口移动大小
    
                 if (strcmp(szClass, "SHBrowseForFolder ShellNameSpace Control") == 0)
    
                 {
     
                    GetWindowRect(hChild, rect);
     
                    rect.top -= REMOVE_HEIGHT;

                         CPoint pt = rect.TopLeft();
     
                    ScreenToClient(hwnd, &pt);
     
                    MoveWindow(hChild, pt.x, pt.y, rect.Width(), rect.Height(), TRUE);
    
                 }

                     if (strcmp(szClass, "Edit") == 0)
    
                 {
     
                    hWndEdit = hChild;
    
                 }
    
    
                 hChild = GetNextWindow(hChild, GW_HWNDNEXT);
   
              }

                 SetWindowText(hwnd, "alinx文件浏览...");
  
           }
            break;
  
        case BFFM_SELCHANGED:
  
           if(hWndEdit)
  
           {
   
              if(::SHGetPathFromIDList((LPITEMIDLIST)lParam, strDir.GetBufferSetLength(MAX_PATH)))
   
              {
    
                 SetWindowText(hWndEdit, strDir);
   
              }
   
              else
   
              {
 
                    SetWindowText(hWndEdit, NULL);
    
                 SendMessage(hwnd, BFFM_VALIDATEFAILED, 0, 0);
   
              }
               strDir.ReleaseBuffer();
            }
            break;
  
        default:
            break;
  
        }
 
        return 0;
    }

3、效果
   

 

 

添加评论 | 阅读评论 (1)

 

18:03

 | 

固定链接 | 引用通告 (0) | 记录它 | 计算机与 Internet

 

 

固定链接

 

关闭

 

 

http://yaoye1225.spaces.msn.com/blog/cns!42ED7ABC656D2C49!128.entry

 

 

 

 

 

 

 

 

Windows目录树的创建和SHGetDesktopFolder介绍

 

Windows文件夹管理树的实现实质上是对Widows名空间的遍历。名空间的每隔文件夹都提供了一个IShellFolder接口。
遍历名空间的方法是:
    1
、调用SHGetDesktopFolder函数获得桌面文件夹的IShellFolder接口,桌面文件夹是文件夹管理树的根节点。
    2
、调用所获得的IShellFolder接口的EnumObjects成员函数列举出子文件夹。
    3
、调用IShellFolderBindToObject成员函数获得子文件夹的IShellFolder接口。
   
重复23步骤,列举出某文件夹下的所有子文件夹。直到所获得的IShellFolder的接口为NULL为止。

其中,SHGetDesktopFolder方法参数的一些解析:

CSIDL_BITBUCKET                       回收站
CSIDL_CONTROLS                       
控制面板
CSIDL_DESKTOP                         Windows
桌面Desktop
CSIDL_DESKTOPDIRECTORY         Desktop
的目录
CSIDL_DRIVES                           
我的电脑
CSIDL_FONTS                             
字体目录
CSIDL_NETHOOD                        
网上邻居
CSIDL_NETWORK                        
网上邻居虚拟目录
CSIDL_PERSONAL                       
我的文档
CSIDL_PRINTERS                        
打印机
CSIDL_PROGRAMS                      
程序组
CSIDL_RECENT                           
最近打开的文档
CSIDL_SENDTO                           "
发送到"菜单项
CSIDL_STARTMENU                     
任务条启动菜单项
CSIDL_STARTUP                          
启动目录
CSIDL_TEMPLATES                      
文档模板

 

 

添加评论

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值