常用的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

 

 

 

 

 

 

 

329

 

 

 

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

 

 

 

 

 

 

 

 

328

 

 

 

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

 

 

 

 

 

 

 

327

 

 

 

c#貼士

 

回車換行“/r/n”

 

 

添加評論

 

10:23

 | 

固定鏈接 | 引用通告 (0) | 記錄它

 

 

固定鏈接

 

關閉

 

 

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

 

 

 

 

 

 

 

 

320

 

 

 

有用的網址

 

韓國網址大全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

 

 

 

 

 

 

 

316

 

 

 

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

 

 

 

 

 

 

 

 

32

 

 

 

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

 

 

 

 

 

 

 

221

 

 

 

sessioncookies的區別

 

session是儲存在服務器內存上
cookies
是用文本形式儲存在客戶機上.

session
安全性比cookies高,cookies可能會泄露數據.
session
佔用服務器資源
cookies
不佔用服務器資源。。。。。。

 

 

添加評論

 

10:41

 | 

固定鏈接 | 引用通告 (0) | 記錄它 | Asp編程

 

 

固定鏈接

 

關閉

 

 

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

 

 

 

 

 

 

 

 

217

 

 

 

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

 

 

 

 

 

 

 

19

 

 

 

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規範,該規範發佈在W3C網站上。
    
   
在一個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

[email protected] (George Matesky)

webMaster

技術人員的Email

[email protected] (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地址

[email protected]

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>[email protected] (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 必須遵循w3c網站上公佈的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

頻道文章所用語言,

可用netscapew3c推薦的列表

可選

en-us

copyright

頻道內容的版權說明

 

可選

Copyright 2002, Spartanburg Herald-Journal

managingEditor

責任編輯的email

 

可選

[email protected] (George Matesky)

webMaster

負責頻道技術事務的網站管理員email

 

可選

[email protected] (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

 

 

 

 

 

 

 

 

1215

 

 

 

GUID

 

描述 CLSID

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

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

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

字體 {D20EA4E1-3957-11d2-A40B-0C5020524152}

歷史記錄 {FF393560-C2A7-11CF-BFF4-444553540000}

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

Microsoft網絡 {00028B00-0000-0000-C000-000000000046}

我的電腦 {20D04FE0-3AEA-1069-A2D8-08002B30309D}

我的文檔 {450D8FBA-AD25-11D0-98A8-0800361B1103}

網上鄰居 {1f4de370-d627-11d1-ba4f-00a0c91eedba}

網絡連接 {7007ACC7-3202-11D1-AAD2-00805FC1270E}

打印機和傳真 {2227A280-3AEA-1069-A2DE-08002B30309D}

程序文件夾 {7be9d83c-a729-4d97-b5a7-1b7313c39e0a}

 回收站 {645FF040-5081-101B-9F08-00AA002F954E}

掃描儀和照相機 {E211B736-43FD-11D1-9EFB-0000F8757FCD}

 任務計劃 {D6277990-4C6A-11CF-8D87-00AA0060F5BF}

開始菜單文件夾 {48e7caab-b918-4e58-a94d-505519c795dc}

Internet臨時文件 {7BD29E00-76C1-11CF-9DD0-00A0C9034933}

Web文件夾 {BDEADF00-C265-11d0-BCED-00A0C90AB50F}

 

 

添加評論

 

17:56

 | 

固定鏈接 | 引用通告 (0) | 記錄它

 

 

固定鏈接

 

關閉

 

 

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

 

 

 

 

 

 

 

1118

 

 

 

自由定製文件夾選擇對話框

 

定製,文件夾選擇對話框,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                      
文檔模板

 

 

添加評論

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章