<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆:19 文章:2 評論:6 引用:0
    BlogJava 首頁 發(fā)新隨筆
    發(fā)新文章 聯(lián)系 聚合管理

    2006年1月19日

    我個人憑借自己的眼光和技術(shù),創(chuàng)作了一個有潛在商業(yè)價值的網(wǎng)站,中國IDC資源導(dǎo)航,當(dāng)然名稱雖然是導(dǎo)
    航,但我的想法是作成國內(nèi)IDC行業(yè)的資源整合,主要內(nèi)容包括IDC導(dǎo)航站、商務(wù)站、資訊站、論壇四個版
    塊。

    導(dǎo)航站:是收集互聯(lián)網(wǎng)資源,為客戶導(dǎo)航;
    商務(wù)站:是整合國內(nèi)現(xiàn)有運營商,讓運營商在此建立自己的信息平臺。目標(biāo)是形成國際IDC商務(wù)站;
    資訊站:是國內(nèi)外有關(guān)IDC的新聞資訊、技術(shù)信息;

    我現(xiàn)在是一個人在作,目前版本是1。0只有導(dǎo)航站。2。0正在全面開發(fā)之中,增加商務(wù)站。生成Html頁,利
    于搜索引擎的收錄。目前使用技術(shù)是asp+sql2000,但準(zhǔn)備在4。0時有可能全面改版,使用技術(shù)Jsp+MySql。

    目前的問題,個人精力有限,開發(fā)速度慢,思維有限,希望業(yè)界精英提供好的建議,歡迎懂技術(shù)的精英加
    入。現(xiàn)在純屬開發(fā)階段,但可以承諾,如果項目有發(fā)展,可以分得相應(yīng)股份。

    QQ:316156915
    Msn:yan65919@hotmail.com
    E-mail:yan65919@gmail.com

    目前可以看到的痕跡:www.idcdh.com
    posted @ 2006-10-24 11:33 yanzhicun 閱讀(404) | 評論 (1)編輯 收藏
     
    今天“百年不遇”的停電了,看了一天書。晚上搞了一下全文索引,決定把心得貼出來,我盡量寫的詳細(xì),大家共同學(xué)習(xí),歡迎指正!
      
      1、啟動 Microsoft Search 服務(wù)
      
        開疾說?->SQL程序組-->服務(wù)管理器-->下拉筐-->Microsoft Search 服務(wù)-->啟動它
      
      2、
       ..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目錄里建一個非空noise.chs文件
       非空noise.chs文件,也有人說是空的noise.chs文件,但我每次都往里寫幾個沒用的字母。
      
      3、建立環(huán)境
      
        打開查詢分析器-->執(zhí)行下列腳本:
      --------------------------------------------
      create database test ---創(chuàng)建test數(shù)據(jù)庫
      use test       ---選擇test數(shù)據(jù)庫
      create table dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---創(chuàng)建dali表
      --dali表中 Id,MyImage,FileType 三列是必須的,因為要對image列索引的話,必須要有一個主鍵列,一個image列,一個存放文件類型的列
      --我們知道在windows系統(tǒng)中文件類型是靠擴(kuò)展名來區(qū)分的所以FileType列也就是用來放 文件的擴(kuò)展名
      --------------------------------------------
      
      sp_fulltext_database 'enable' --為全文索引啟用數(shù)據(jù)庫
      sp_fulltext_catalog 'My_FullDir', 'create' ---創(chuàng)建一個叫My_FullDif的全文目錄
      
      declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('a') and a.name='a' and a.id=b.id and b.constid=c.id and c.name like 'PK%'
      exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----這兩句是為全文索引,對表進(jìn)行標(biāo)記
      
      sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' ---這句是指定MyImage列為全文索引列,FileType是類型列
      ------------------------------------------------
      4、在c盤下放一個擴(kuò)展名為doc的word文件,一個擴(kuò)展名為xls的excel文件,一個擴(kuò)展名為htm的網(wǎng)頁文件,個擴(kuò)展名為bmp的圖片共4個,大家可根據(jù)實際情況放入!
      
      5、插入數(shù)據(jù)
      
       建立下面這個存儲過程
      --------------------------------------------------
      CREATE PROCEDURE sp_textcopy
       @srvname  varchar (30),
       @login   varchar (30),
       @password  varchar (30),
       @dbname   varchar (30),
       @tbname   varchar (30),
       @colname  varchar (30),
       @filename  varchar (30),
       @whereclause varchar (40),
       @direction char(1)
      AS
      /* 這是使用textcopy工具將文件插入到數(shù)據(jù)庫中,如果有前臺工具可以用前臺開發(fā)工具將文件插入,這里為了演示 */
      DECLARE @exec_str varchar (255)
      SELECT @exec_str='textcopy /S ' @srvname ' /U ' @login ' /P ' @password ' /D ' @dbname ' /T' @tbname ' /C ' @colname ' /W"' @whereclause '" /F"' @filename '" /' @direction
      EXEC master..xp_cmdshell @exec_str
      ----------------------------------------------------
      
      insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一個16進(jìn)制數(shù)對應(yīng)image列,是必須的,不要寫null,第三列是文件類型,既擴(kuò)展名
      
      sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I'
      -------依次參數(shù)是:實例名,用戶名,密碼,數(shù)據(jù)庫名,表名,image列名,路徑及文件名,條件(你必須保證它只選擇一行),I
      ---------------------------------------------------------------------------------------------------------------------
      insert dali values(2,0x,'bmp','圖片')
      sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\圖片.bmp','where ID=2','I' --注意條件是 ID=2
      
      insert dali values(3,0x,'xls','Excel文件')
      sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意條件是 ID=3
      
      insert dali values(4,0x,'htm','網(wǎng)頁')
      sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\網(wǎng)頁.htm','where ID=4','I' --注意條件是 ID=4
      
      ----------上面的語句,要保證類型一樣,路徑正確,條件唯一正確應(yīng)該就可以了
      
      6、填充全文索引
      
      sp_fulltext_table 'dali','start_full' ---第一個參數(shù)是表名,第二個參數(shù)是啟動表的全文索引的完全填充
      
      7、可以開始你的實驗了
      
      select * from dali where contains(MyImage,'J老師')
      
      select * from dali where contains(MyImage,'海老師')
      
      ------END----------
      --調(diào)試環(huán)境:SQLServer2K、Windows2Kas
    posted @ 2006-07-12 12:00 yanzhicun 閱讀(622) | 評論 (0)編輯 收藏
     

    在SQL 企業(yè)管理器上操作步驟:

    一:進(jìn)入企業(yè)管理器,打開支持服務(wù),選取全文檢索,點擊啟動。

     

    二:對相關(guān)的數(shù)據(jù)表建立全文索引。

    三:全文索引建立向?qū)?/font>

     

     

     

    然后確定提交后,建立向?qū)Ь突就瓿伞?/p>

    到這里在SQL上建立全文索引已經(jīng)完成!

    四:補充:由于全文填充是按照調(diào)度里設(shè)定周期進(jìn)行的,所以不會馬上生效,如果需要的話可以點擊全目錄,運行填充。通常數(shù)據(jù)量大的話不建議在訪問量大的時候進(jìn)行。

     

    解決在全文搜索中搜索中文字符出錯補丁:點擊下載

    解決中文字符出錯問題:

    方法一:
    把下載解壓的文件復(fù)制到...\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\
    目錄下(該路徑為全文目錄路徑,可以全文目錄屬性中查看)

    方法二:
    編輯...\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目錄下的
    noise.chs文件,清空文檔,輸入‘@’(其他的偏僻符號也可以)


    最后,重新進(jìn)行全文完全填充!

    posted @ 2006-07-12 11:44 yanzhicun 閱讀(375) | 評論 (0)編輯 收藏
     

    引言

    微軟的SQL Server數(shù)據(jù)庫是一個在中低端企業(yè)應(yīng)用中占有廣泛市場的關(guān)系型數(shù)據(jù)庫系統(tǒng),它以簡單、方便、易用等特性深得眾多軟件開發(fā)人員和數(shù)據(jù)庫管理人員的鐘愛。但SQL Server 7.0以前的數(shù)據(jù)庫系統(tǒng)由于沒有全文檢索功能,致使無法提供像文本內(nèi)容查找此類的服務(wù),成為一個小小的遺憾。從SQL Server 7.0起,到如今的SQL Server 2000終于具備了全文檢索功能,使用戶可以高效地檢索存儲在數(shù)據(jù)庫char、varchar、text、ntext、nchar、nvarchar等數(shù)據(jù)類型列中的文本數(shù)據(jù)。

    建立全文索引

    在進(jìn)行全文檢索之前,必須先建立和填充數(shù)據(jù)庫全文索引。為了支持全文索引操作,SQL Server 7.0新增了一些存儲過程和Transact-SQL語句。使用這些存儲過程創(chuàng)建全文索引的具體步驟如下(括號內(nèi)為調(diào)用的存儲過程名稱):

    1. 啟動數(shù)據(jù)庫的全文處理功能(sp_fulltext_

    database);;

    2. 建立全文檢索目錄(sp_fulltext_catalog);

    3.在全文檢索目錄中注冊需要全文索引的表(sp_fulltext_table);

    4. 指出表中需要全文檢索的列名(sp_fulltext_

    column);;

    5. 為表創(chuàng)建全文索引(sp_fulltext_table);;

    6. 填充全文檢索目錄(sp_fulltext_catalog)。

    下面舉例說明如何創(chuàng)建全文索引,在本例中,對Test數(shù)據(jù)庫Book表中Title列和Notes列建立全文索引。

    use test //打開數(shù)據(jù)庫

    //打開全文索引支持,啟動SQL Server的全文搜索服務(wù)

    execute sp_fulltext_database ‘enable’

    //建立全文檢索目錄ft_test

    execute sp_fulltext_catalog ‘ft_test’, ‘create’

    為Title列建立全文索引數(shù)據(jù)元,pk_title為Book表中由主鍵所建立的唯一索引,這個參數(shù)是必需的。

    execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’

    //設(shè)置全文索引列名

    execute sp_fulltext_column ‘book’, ‘title’, ‘a(chǎn)dd’

    execute sp_fulltext_column ‘book’,‘notes’, ‘a(chǎn)dd’

    //建立全文索引

    execute sp_fulltext_table ‘book’, ‘a(chǎn)ctivate’

    //填充全文索引目錄

    execute sp_fulltext_catalog ‘ft_test’, ‘start_full’

    至此,全文索引建立完畢。

    進(jìn)行全文檢索

    SQL Server 2000提供的全文檢索語句主要有CONTAINS和FREETEXT。CONTAINS語句的功能是在表的所有列或指定列中搜索:一個字或短語;一個字或短語的前綴;與一個字相近的另一個字;一個字的派生字;一個重復(fù)出現(xiàn)的字。

    CONTAINS語句的語法格式為:

    CONTAINS({column | *}), <contains_search

    _condition>)

    其中,column是搜索列,使用“*”時說明對表中所有全文索引列進(jìn)行搜索。Contains_search_

    condition 說明CONTAINS語句的搜索內(nèi)容,其語法格式為:

    {<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] [...n]

    下面就simple_term和prefix_term參數(shù)做簡要說明:

    simple_term是CONTAINS語句所搜索的單字或短語,當(dāng)搜索的是一個短語時,必須使用雙引號作為定界符。其格式為:

    {‘word’|“ phrase”}

    prefix_term說明CONTAINS語句所搜索的字或短語前綴,其格式為:

    {“word*” | “phrase*”}

    例如,下面語句檢索Book表的Title列和Notes列中包含“database”或“computer”字符串的圖書名稱及其注釋信息:

    select title, notes

    from book

    where contains(tilte, ‘database’) or contains(notes,‘database’)

    or contains(title,‘computer’) or contains(notes,‘computer’)

    FREETEXT語句的功能是在一個表的所有列或指定列中搜索一個自由文本格式的字符串,并返回與該字符串匹配的數(shù)據(jù)行。所以,F(xiàn)REETEXT語句所執(zhí)行的功能又稱做自由式全文查詢。

    FREETEXT語句的語法格式為:FREETEXT({column | * },‘freetext_string’)

    其中,column是被搜索列,使用“*”時說明對表中的所有全文索引列進(jìn)行搜索。Freetext_string參數(shù)指出所搜索的自由文本格式字符串。

    例如,下面語句使用FREETEXT語句搜索Book表中包含“Successful Life”字符串的數(shù)據(jù)行:

    select title, notes

    from book

    where freetext(*,‘Successful Life’)

    posted @ 2006-07-12 11:42 yanzhicun 閱讀(460) | 評論 (0)編輯 收藏
     
    使用SQL?SERVER?2000的全文檢索功能?

     ?
    步驟:

    1、??打開NorthWind數(shù)據(jù)庫,右鍵Products表,選擇“全文索引表”,“在表上定義全文索引”,為其創(chuàng)建全文目錄。在“全文索引向?qū)А敝?,選擇你需要全文查詢條件的列(可以是文本或圖像),我們選擇Productname和QuantityPerUnit列。然后下一步,輸入一個新的目錄proCatalog,點擊下一步。在填充調(diào)度一項里,我們暫時不建立填充調(diào)度。接著“下一步”,全成全文索引向?qū)АM瓿珊?,我們可以看到在“全文目錄”里,多了一個全文目錄proCatalog。右鍵proCatalog屬性,可以看到其狀態(tài)、表、調(diào)度情況。
    2、??右鍵全文目錄proCatalog,?“啟動完全填充”,系統(tǒng)會出現(xiàn)“全文目錄填充成功啟動”。
    3、??這時,我們可以使用Transact-SQL進(jìn)行全文檢索了,我們使用CONTAINS、FREETEXT等謂詞。如:


    檢索ProductName中,即包含b又包含c的所有列

    SELECT?*

    FROM?Products

    WHERE?CONTAINS(ProductName,?'"c*"?and?"b*"?')

    ?

    檢索ProductName中,即包含chai?chang?tofu之一的所有列

    SELECT?*

    FROM?Products

    WHERE?FREETEXT(ProductName,?'chai?chang?tofu?')

    ?

    我們還可以使用CONTAINSTABLE、FREETEXTTABLE等

    ?

    4、??我們可以用.NET創(chuàng)建WEB或Form客戶端,提供一個良好的全文檢索界面,使自己的應(yīng)用程序得到擴(kuò)展

    ?

    ?

    ?

    參考:
    全文查詢有關(guān)的系統(tǒng)存儲過程

    (1)啟動數(shù)據(jù)庫的全文處理功能(sp_fulltext_datebase);?
    (2)建立全文目錄(sp_fulltext_catalog);?
    (3)在全文目錄中注冊需要全文索引的表(sp_fulltext_table);?
    (4)指出表中需要全文檢索的列名(sp_fulltext_column)?
    (5)為表創(chuàng)建全文索引(sp_fulltext_table);?
    (6)填充全文索引(sp_fulltext_catalog)。

    ?

    ?

    ?

    全文查詢支持

    Microsoft&reg;?SQL?Server&#8482;?2000?在接收帶全文構(gòu)造的?Transact-SQL?語句時,使用全文提供程序從?Microsoft?搜索服務(wù)檢索所需信息。全文構(gòu)造是?CONTAINS?或?FREETEXT?謂詞,或者是?CONTAINSTABLE?或?FREETEXTTABLE?行集函數(shù)。如果不知道包含搜索條件的列,全文構(gòu)造可以在全文索引中引用多列。該進(jìn)程的流程如下圖所示。

    ?


    這一進(jìn)程涉及的步驟包括:?

    應(yīng)用程序給?SQL?Server?實例發(fā)送帶全文構(gòu)造的?Transact-SQL?語句。

    SQL?Server?關(guān)系引擎通過查詢系統(tǒng)表驗證全文構(gòu)造,確定全文索引是否覆蓋列引用。關(guān)系引擎將每個?SQL?語句簡化為一系列行集操作,并使用?OLE?DB?將這些操作傳遞給基礎(chǔ)組件,通常是存儲引擎。關(guān)系引擎通過全文提供程序而不是存儲引擎,將任何全文構(gòu)造轉(zhuǎn)換成對行集的請求。請求的行集是滿足搜索條件和等級的鍵集,而這個等級表示每個鍵的數(shù)據(jù)滿足搜索條件的程度。向全文提供程序發(fā)送的行集請求命令包括全文檢索條件。

    全文提供程序驗證請求并將搜索條件更改為由Microsoft?搜索服務(wù)的查詢支持組件使用的形式。將請求發(fā)送到搜索服務(wù)。

    查詢支持組件使用搜索引擎組件從全文索引析取所請求的數(shù)據(jù)。然后以行集的形式將這些數(shù)據(jù)傳遞回全文提供程序。

    全文提供程序?qū)⑦@個行集返回給關(guān)系引擎。

    關(guān)系引擎將它從存儲引擎和全文提供程序收到的所有行集進(jìn)行組合,以生成發(fā)送回客戶端的最終結(jié)果集。?

    ?

    全文目錄和索引

    Microsoft&reg;?SQL?Server&#8482;?2000?全文索引為在字符串?dāng)?shù)據(jù)中進(jìn)行復(fù)雜的詞搜索提供有效支持。全文索引存儲關(guān)于重要詞和這些詞在特定列中的位置的信息。全文查詢利用這些信息,可快速搜索包含具體某個詞或一組詞的行。

    全文索引包含在全文目錄中。每個數(shù)據(jù)庫可以包含一個或多個全文目錄。一個目錄不能屬于多個數(shù)據(jù)庫,而每個目錄可以包含一個或多個表的全文索引。一個表只能有一個全文索引,因此每個有全文索引的表只屬于一個全文目錄。

    全文目錄和索引不存儲在它們所屬的數(shù)據(jù)庫中。目錄和索引由?Microsoft?搜索服務(wù)分開管理。

    全文索引必須在基表上定義,而不能在視圖、系統(tǒng)表或臨時表上定義。?全文索引的定義包括:?

    能唯一標(biāo)識表中各行的列(主鍵或候選鍵),而且不允許?NULL?值。

    索引所覆蓋的一個或多個字符串列。?

    全文索引由鍵值填充。每個鍵的項提供與該鍵相關(guān)聯(lián)的重要詞(干擾詞或終止詞除外)、它們所在的列和它們在列中的位置等有關(guān)信息。

    格式化文本字符串(如?Microsoft&reg;?Word&#8482;?文檔文件或?HTML?文件)不能存儲在字符串或?Unicode?列中,因為這些文件中的許多字節(jié)包含不構(gòu)成有效字符的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)庫應(yīng)用程序可能仍需要訪問這些數(shù)據(jù)并對其應(yīng)用全文檢索。因為?image?列并不要求每一字節(jié)都構(gòu)成一個有效字符,所以許多站點將這類數(shù)據(jù)存儲在?image?列中。SQL?Server?2000?引入了對存儲在?image?列中的這些類型的數(shù)據(jù)執(zhí)行全文檢索的能力。SQL?Server?2000?提供篩選,可從?Microsoft?Office&#8482;?文件(.doc、.xls?和?.ppt?文件)、文本文件(.txt?文件)及?HTML?文件(.htm?文件)中析取文本化數(shù)據(jù)。設(shè)計表時除包括保存數(shù)據(jù)的?image?列外,還需包括綁定列來保存存儲在?image?列中的數(shù)據(jù)格式的文件擴(kuò)展名。可以創(chuàng)建引用?image?列和綁定列的全文索引,以便在存儲于?image?列中的文本化信息上啟用全文檢索。SQL?Server?2000?全文檢索引擎使用綁定列中的文件擴(kuò)展名信息,選擇從列中析取文本化數(shù)據(jù)的合適的篩選。

    全文索引是用于執(zhí)行兩個?Transact-SQL?謂詞的組件,以便根據(jù)全文檢索條件對行進(jìn)行測試:?

    CONTAINS

    FREETEXT?

    Transact-SQL?還包含兩個返回符合全文檢索條件的行集的函數(shù):?

    CONTAINSTABLE

    FREETEXTTABLE?

    SQL?Server?在內(nèi)部將搜索條件發(fā)送給?Microsoft?搜索服務(wù)。Microsoft?搜索服務(wù)查找所有符合全文檢索條件的鍵并將它們返回給?SQL?Server。SQL?Server?隨后使用鍵的列表來確定表中要處理的行。

    全文索引

    對?Microsoft&reg;?SQL?Server&#8482;?2000?數(shù)據(jù)的全文支持涉及兩個功能:對字符數(shù)據(jù)發(fā)出查詢的能力和創(chuàng)建及維護(hù)基礎(chǔ)索引以簡化這些查詢的能力。

    全文索引在許多地方與普通的?SQL?索引不同。

    普通?SQL?索引
    ?全文索引
    ?
    存儲時受定義它們所在的數(shù)據(jù)庫的控制。
    ?存儲在文件系統(tǒng)中,但通過數(shù)據(jù)庫管理。
    ?
    每個表允許有若干個普通索引。
    ?每個表只允許有一個全文索引。
    ?
    當(dāng)對作為其基礎(chǔ)的數(shù)據(jù)進(jìn)行插入、更新或刪除時,它們自動更新。
    ?將數(shù)據(jù)添加到全文索引稱為填充,全文索引可通過調(diào)度或特定請求來請求,也可以在添加新數(shù)據(jù)時自動發(fā)生。
    ?
    不分組。
    ?在同一個數(shù)據(jù)庫內(nèi)分組為一個或多個全文目錄。
    ?
    使用?SQL?Server?企業(yè)管理器、向?qū)Щ?Transact-SQL?語句創(chuàng)建和除去。
    ?使用?SQL?Server?企業(yè)管理器、向?qū)Щ虼鎯^程創(chuàng)建、管理和除去。
    ?


    ?

    這些差異使大量管理任務(wù)變得不可缺少。全文管理是在幾個層次上實施的:?

    服務(wù)器?

    可以對服務(wù)器范圍的某些屬性(如?resource_usage)加以設(shè)置,以便增加或減少全文服務(wù)所使用的系統(tǒng)資源數(shù)量。


    說明??全文引擎作為名為?Microsoft?搜索的服務(wù)在?Microsoft?Windows?NT&reg;?Server?和?Microsoft?Windows&reg;?2000?Server?上運行。對于?Microsoft?SQL?Server?個人版,Microsoft?搜索服務(wù)不可用。盡管這意味著?Microsoft?搜索服務(wù)既未安裝在?Microsoft?Windows?95/98?上,也未安裝在?Windows?NT?工作站或?Windows?2000?Professional?客戶端上,但這些客戶端在連接到?SQL?Server?標(biāo)準(zhǔn)版安裝或企業(yè)版實例時可以使用這項服務(wù)。

    數(shù)據(jù)庫?

    必須啟用數(shù)據(jù)庫才能使用全文服務(wù)。可以在已啟用的數(shù)據(jù)庫中創(chuàng)建和除去一個或多個全文目錄的元數(shù)據(jù)。

    全文目錄?

    全文目錄包含數(shù)據(jù)庫中的全文索引。每個目錄可以用于數(shù)據(jù)庫內(nèi)的一個或多個表的索引需求。該目錄中的索引是使用這里介紹的管理功能來填充的。(全文目錄必須駐留在與?SQL?Server?實例相關(guān)聯(lián)的本地硬盤驅(qū)動器上。不支持可移動的驅(qū)動器、軟盤和網(wǎng)絡(luò)驅(qū)動器)。在每個服務(wù)器上最多可創(chuàng)建?256?個全文目錄。


    說明??Windows?NT?故障轉(zhuǎn)移群集環(huán)境完全支持全文索引。有關(guān)更多信息,請參見在故障轉(zhuǎn)移群集中運行全文查詢。

    表?

    首先,必須為全文支持啟用表。然后,為與該表相關(guān)聯(lián)的全文索引創(chuàng)建元數(shù)據(jù)(如表名及其全文目錄)。表啟用后,可以用為全文支持而啟用的列中的數(shù)據(jù)填充它。如果表的全文定義被更改(例如,添加一個也將為全文檢索而索引的新列),則必須重新填充相關(guān)的全文目錄以使全文索引與新的全文定義同步。

    列?

    可以從非活動的注冊表中添加或除去支持全文查詢的列。

    在所有這些級別上,可使用工具檢索元數(shù)據(jù)和狀態(tài)信息。

    和常規(guī)?SQL?索引一樣,當(dāng)在相關(guān)表中修改數(shù)據(jù)時,可自動更新全文索引。或者,也可以適當(dāng)?shù)拈g隔手工重新填充全文索引。這種重寫可能既耗時又大量占用資源,因此,在數(shù)據(jù)庫活動較少時,這通常是在后臺運行的異步進(jìn)程。

    應(yīng)將具有相同更新特性的表(如更改少的與更改多的,或在一天的特定時段內(nèi)頻繁更改的表)組合在一起,并分配給相同的全文目錄。通過以此方法設(shè)置全文目錄填充調(diào)度,使得全文索引和表保持同步,且在數(shù)據(jù)庫活動較多時不對數(shù)據(jù)庫服務(wù)器的資源使用產(chǎn)生負(fù)面影響。

    為全文目錄中的表安排全文索引的位置是非常重要的。在為全文目錄指定表時,應(yīng)該注意下列基本原則:?

    始終選擇可用于全文唯一鍵的最小唯一索引。(4?個字節(jié)且基于整數(shù)的索引是最佳的。)這將顯著減少文件系統(tǒng)中?Microsoft?搜索服務(wù)所需要的資源。如果主鍵很大(超過?100?字節(jié)),可以考慮選擇表中其它唯一索引(或創(chuàng)建另一個唯一索引)作為全文唯一鍵。否則,如果全文唯一鍵的大小達(dá)到允許的上限(450?字節(jié)),全文填充將無法繼續(xù)進(jìn)行。

    如果進(jìn)行索引的表有成千上萬行,請將該表指定給其自己的全文目錄。

    應(yīng)該考慮對其進(jìn)行全文索引的表中發(fā)生的更改數(shù)以及表的行數(shù)。如果要更改的總行數(shù),加上上次全文填充期間表中出現(xiàn)的行數(shù)達(dá)到成千上萬行,請將該表指定給其自己的全文目錄。?

    請參見

    sp_fulltext_table

    CONTAINS

    一個謂詞,用于搜索包含基于字符的數(shù)據(jù)類型的列,該列與單個詞和短語,以及與另一個詞一定范圍之內(nèi)的近似詞精確或模糊(不太精確的)匹配或者加權(quán)匹配。CONTAINS?可以搜索:?

    詞或短語。

    詞或短語的前綴。

    另一個詞附近的詞。

    由另一個詞的詞尾變化生成的詞(例如,詞?drive?是?drives、drove、driving?和?driven?詞尾變化的詞干)。

    比另一個詞具有更高加權(quán)的詞。?

    語法
    CONTAINS
    ????(?{?column?|?*?}?,?'<?contains_search_condition?>'??????

    ?

    FREETEXT

    是個謂詞,用于搜索含有基于字符的數(shù)據(jù)類型的列,其中的值符合在搜索條件中所指定文本的含義,但不符合表達(dá)方式。使用?FREETEXT?時,全文查詢引擎內(nèi)部將?freetext_string?拆分為若干個搜索詞,并賦予每個詞以不同的加權(quán),然后查找匹配。

    語法

    FREETEXT?(?{?column?|?*?}?,?'freetext_string'?

    ?

    CONTAINSTABLE?和?FREETEXTTABLE?函數(shù)用來指定返回每行的相對排名的全文查詢。這兩個函數(shù)與全文謂詞?CONTAINS?和?FREETEXT?很相似,但是用法不同。

    (此文部分資料來自MSDN)
    posted @ 2006-07-12 11:39 yanzhicun 閱讀(565) | 評論 (0)編輯 收藏
     

    JavaScript實際應(yīng)用:innerHTMl和確認(rèn)提示的使用

      今天開發(fā)中涉及到對一個層的信息控制,就是控制一個層中顯示什么信息,查找資料才知道使用innerHTML屬性來控制層的值,這個innerHTML跟表單里面的value屬性有點類似,能夠控制層的顯示值。

      比如說我一個div層里本來沒有值,我處罰一個事件后要顯示值,那么就能夠使用innerHTML屬性了,其實innerHTML屬性除了能控制層以外,還能控制窗口內(nèi)容的所有元素,但是我沒有測試過。

    (1)對div標(biāo)簽的控制

    div標(biāo)簽跟span標(biāo)簽是不一樣的,div是一個層的塊,span是一行,我們下面看演示就知道區(qū)別了。先來看一段控制div的代碼。

    程序代碼 程序代碼
    <script language="javascript">
    function chageDiv(number)
    {
    if (number == 1) {
    document.getElementById("div1").innerHTML = "值為1";
    }
    if (number == 2) {
    document.getElementById("div1").innerHTML = "值為2";
    }
    }
    </script>

    DIV塊測試:<div id="div1">默認(rèn)值</div>

    <a href="#" onClick="chageDiv(1)">改變值為1</a>
    <a href="#" onClick="chageDiv(2)">改變值為2</a>


    演示:
    HTML代碼


    [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


      運行的時候,點擊“改變值為1”那么“默認(rèn)值”這個內(nèi)容將會被改變?yōu)椤爸禐?”,但是注意其中的界面,就是會發(fā)現(xiàn)“DIV測試:”和“默認(rèn)值”是兩行顯示的,因為DIV是按塊來顯示的。

    (2)對span的控制

    與div類似,但是它是按照行來顯示的,看下面的代碼:
    程序代碼 程序代碼
    <script language="javascript">
    function chageSpan(number)
    {
    if (number == 1) {
    document.getElementById("span1").innerHTML = "值為1";
    }
    if (number == 2) {
    document.getElementById("span1").innerHTML = "值為2";
    }
    }
    </script>
    Span行測試:
    <span id="span1">默認(rèn)值</span><br>
    <a href="#" onClick="chageSpan(1)">改變值為1</a>
    <a href="#" onClick="chageSpan(2)">改變值為2</a>


    當(dāng)點擊“改變值為1”的時候,“默認(rèn)值”將變?yōu)椤爸禐?”,但是“Span行測試”和“默認(rèn)值”是在同一行顯示的,跟DIV不一樣。

    另外一個值得注意的就是,不管是div還是span,后面的名字都是以為id來定義的,不是象表單一樣是使用name來定義的。

    (3)confirm確認(rèn)提示框的制作

    當(dāng)我們要執(zhí)行一個危險操作的時候,比如刪除某個內(nèi)容等,那么就應(yīng)該給用戶相應(yīng)的提示來用戶不容易犯錯誤。一般提示都是使用confirm()函數(shù)來處理的,給它提交一個參數(shù)作為顯示的信息提示,那么訪問的時候?qū)棾鰧υ捒颍绻c擊了“確定”那么將改函數(shù)返回true,點擊了“取消”將放回false,我們針對這個特點來使用兩種方法來控制用戶是否執(zhí)行某個操作。

    看代碼:

    程序代碼 程序代碼
    <script language="javascript">
    function accessNeteasy()
    {
    if(confirm('你真的要訪問網(wǎng)易新聞 ?')) {
    location='http://calendar.eyou.eyou';
    }
    }
    function accessSina()
    {
    if (confirm('你確定要訪問新浪新聞 ?')) {
    return true;
    } else {
    return false;
    }
    }
    </script>

    訪問方式一:
    <a href="#" onClick="accessNeteasy()">網(wǎng)易新聞</a><br>
    訪問方式二:
    <a href="http://news.sina.com.cn" onClick="return accessSina()">新浪新聞</a>


      我們這里建立了兩個函數(shù),一個accessNeteay,一個accessSina,就是訪問網(wǎng)易和新浪,我們使用不同的方法,第一種就是當(dāng)點了鏈接以后,判斷如果是true的話,那么就location到指定鏈接,這種方法比較不具有通用型,只能針對單個的鏈接。第二種方法是使用返回值的形式,當(dāng)確定要訪問的時候返回true,不確定的時候返回false,那么這個可以針對任何鏈接來做,寫成一個通用的信息提示,方便頁面中的調(diào)用。

    以上代碼都經(jīng)過測試通過,可以自己再這個基礎(chǔ)上進(jìn)行擴(kuò)展,寫出自己需要的JavaScript代碼。
    更多小技巧建議參考藍(lán)色理想的鏈接:http://www.blueidea.com/tech/web/2004/2379.asp

    posted @ 2006-06-06 13:03 yanzhicun 閱讀(623) | 評論 (0)編輯 收藏
     
    mysql的日期和時間函數(shù)

    這里是一個使用日期函數(shù)的例子。下面的查詢選擇所有 date_col 值在最后 30 天內(nèi)的記錄。

    mysql> SELECT something FROM tbl_name
               WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
    
    DAYOFWEEK(date)
    返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday)。索引值符合 ODBC 的標(biāo)準(zhǔn)。
    mysql> SELECT DAYOFWEEK('1998-02-03');
            -> 3
    
    WEEKDAY(date)
    返回 date 的星期索引(0 = Monday, 1 = Tuesday, ... 6 = Sunday):
    mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
            -> 1
    mysql> SELECT WEEKDAY('1997-11-05');
            -> 2
    
    DAYOFMONTH(date)
    返回 date 是一月中的第幾天,范圍為 131
    mysql> SELECT DAYOFMONTH('1998-02-03');
            -> 3
    
    DAYOFYEAR(date)
    返回 date 是一年中的第幾天,范圍為 1366
    mysql> SELECT DAYOFYEAR('1998-02-03');
            -> 34
    
    MONTH(date)
    返回 date 中的月份,范圍為 112
    mysql> SELECT MONTH('1998-02-03');
            -> 2
    
    DAYNAME(date)
    返回 date 的星期名:
    mysql> SELECT DAYNAME("1998-02-05");
            -> 'Thursday'
    
    MONTHNAME(date)
    返回 date 的月份名:
    mysql> SELECT MONTHNAME("1998-02-05");
            -> 'February'
    
    QUARTER(date)
    返回 date 在一年中的季度,范圍為 14
    mysql> SELECT QUARTER('98-04-01');
            -> 2
    
    WEEK(date)
    WEEK(date,first)
    對于星期日是一周中的第一天的場合,如果函數(shù)只有一個參數(shù)調(diào)用,返回 date 為一年的第幾周,返回值范圍為 053 (是的,可能有第 53 周的開始)。兩個參數(shù)形式的 WEEK() 允許你指定一周是否以星期日或星期一開始,以及返回值為 0-53 還是 1-52。 這里的一個表顯示第二個參數(shù)是如何工作的:
    含義
    0 一周以星期日開始,返回值范圍為 0-53
    1 一周以星期一開始,返回值范圍為 0-53
    2 一周以星期日開始,返回值范圍為 1-53
    3 一周以星期一開始,返回值范圍為 1-53 (ISO 8601)
    mysql> SELECT WEEK('1998-02-20');
            -> 7
    mysql> SELECT WEEK('1998-02-20',0);
            -> 7
    mysql> SELECT WEEK('1998-02-20',1);
            -> 8
    mysql> SELECT WEEK('1998-12-31',1);
            -> 53
    
    注意,在版本 4.0 中,WEEK(#,0) 被更改為匹配 USA 歷法。 注意,如果一周是上一年的最后一周,當(dāng)你沒有使用 2 或 3 做為可選參數(shù)時,MySQL 將返回 0:
    mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);
            -> 2000, 0
    mysql> SELECT WEEK('2000-01-01',2);
            -> 52
    
    你可能會爭辯說,當(dāng)給定的日期值實際上是 1999 年的第 52 周的一部分時,MySQL 對 WEEK() 函數(shù)應(yīng)該返回 52。我們決定返回 0 ,是因為我們希望該函數(shù)返回“在指定年份中是第幾周”。當(dāng)與其它的提取日期值中的月日值的函數(shù)結(jié)合使用時,這使得 WEEK() 函數(shù)的用法可靠。 如果你更希望能得到恰當(dāng)?shù)哪?周值,那么你應(yīng)該使用參數(shù) 2 或 3 做為可選參數(shù),或者使用函數(shù) YEARWEEK()
    mysql> SELECT YEARWEEK('2000-01-01');
            -> 199952
    mysql> SELECT MID(YEARWEEK('2000-01-01'),5,2);
            -> 52
    
    YEAR(date)
    返回 date 的年份,范圍為 10009999
    mysql> SELECT YEAR('98-02-03');
            -> 1998
    
    YEARWEEK(date)
    YEARWEEK(date,first)
    返回一個日期值是的哪一年的哪一周。第二個參數(shù)的形式與作用完全與 WEEK() 的第二個參數(shù)一致。注意,對于給定的日期參數(shù)是一年的第一周或最后一周的,返回的年份值可能與日期參數(shù)給出的年份不一致:
    mysql> SELECT YEARWEEK('1987-01-01');
            -> 198653
    
    注意,對于可選參數(shù) 0 或 1,周值的返回值不同于 WEEK() 函數(shù)所返回值(0), WEEK() 根據(jù)給定的年語境返回周值。
    HOUR(time)
    返回 time 的小時值,范圍為 023
    mysql> SELECT HOUR('10:05:03');
            -> 10
    
    MINUTE(time)
    返回 time 的分鐘值,范圍為 059
    mysql> SELECT MINUTE('98-02-03 10:05:03');
            -> 5
    
    SECOND(time)
    返回 time 的秒值,范圍為 059
    mysql> SELECT SECOND('10:05:03');
            -> 3
    
    PERIOD_ADD(P,N)
    增加 N 個月到時期 P(格式為 YYMMYYYYMM)中。以 YYYYMM 格式返回值。 注意,期間參數(shù) P不是 一個日期值:
    mysql> SELECT PERIOD_ADD(9801,2);
            -> 199803
    
    PERIOD_DIFF(P1,P2)
    返回時期 P1P2 之間的月數(shù)。P1P2 應(yīng)該以 YYMMYYYYMM 指定。 注意,時期參數(shù) P1P2不是 日期值:
    mysql> SELECT PERIOD_DIFF(9802,199703);
            -> 11
    
    DATE_ADD(date,INTERVAL expr type)
    DATE_SUB(date,INTERVAL expr type)
    ADDDATE(date,INTERVAL expr type)
    SUBDATE(date,INTERVAL expr type)
    這些函數(shù)執(zhí)行日期的算術(shù)運算。ADDDATE()SUBDATE() 分別是 DATE_ADD()DATE_SUB() 的同義詞。 在 MySQL 3.23 中,如果表達(dá)式的右邊是一個日期值或一個日期時間型字段,你可以使用 +- 代替 DATE_ADD()DATE_SUB()(示例如下)。 參數(shù) date 是一個 DATETIMEDATE 值,指定一個日期的開始。expr 是一個表達(dá)式,指定從開始日期上增加還是減去間隔值。expr 是一個字符串;它可以以一個 “-” 領(lǐng)頭表示一個負(fù)的間隔值。type 是一個關(guān)鍵詞,它標(biāo)志著表達(dá)式以何格式被解釋。 下表顯示 typeexpr 參數(shù)是如何關(guān)聯(lián)的:
    typeexpr期望的格式
    SECONDSECONDS
    MINUTEMINUTES
    HOURHOURS
    DAYDAYS
    MONTHMONTHS
    YEARYEARS
    MINUTE_SECOND"MINUTES:SECONDS"
    HOUR_MINUTE"HOURS:MINUTES"
    DAY_HOUR"DAYS HOURS"
    YEAR_MONTH"YEARS-MONTHS"
    HOUR_SECOND"HOURS:MINUTES:SECONDS"
    DAY_MINUTE"DAYS HOURS:MINUTES"
    DAY_SECOND"DAYS HOURS:MINUTES:SECONDS"
    expr 的格式中,MySQL 允許任何字符作為定界符。表中所顯示的是建議的定界字符。如果 date 參數(shù)是一個 DATE 值,并且計算的間隔僅僅有 YEAR、MONTHDAY 部分(沒有時間部分),那么返回值也是一個 DATE 值。否則返回值是一個 DATETIME 值:
    mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
            -> 1998-01-01 00:00:00
    mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
            -> 1998-01-01
    mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
           -> 1997-12-31 23:59:59
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
        ->                 INTERVAL 1 SECOND);
            -> 1998-01-01 00:00:00
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
        ->                 INTERVAL 1 DAY);
            -> 1998-01-01 23:59:59
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
        ->                 INTERVAL "1:1" MINUTE_SECOND);
            -> 1998-01-01 00:01:00
    mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
        ->                 INTERVAL "1 1:1:1" DAY_SECOND);
            -> 1997-12-30 22:58:59
    mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
        ->                 INTERVAL "-1 10" DAY_HOUR);
            -> 1997-12-30 14:00:00
    mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
            -> 1997-12-02
    
    如果你指定了一個太短的間隔值(沒有包括 type 關(guān)鍵詞所期望的所有間隔部分),MySQL 假設(shè)你遺漏了間隔值的最左邊部分。例如,如果指定一個 typeDAY_SECOND,那么 expr 值被期望包含天、小時、分鐘和秒部分。如果你象 "1:10" 樣指定一個值,MySQL 假設(shè)天和小時部分被遺漏了,指定的值代表分鐘和秒。換句話說,"1:10" DAY_SECOND 被解釋為等價于 "1:10" MINUTE_SECOND。這類似于 MySQL 解釋 TIME 值為經(jīng)過的時間而不是一天的時刻。 注意,如果依著包含一個時間部分的間隔增加或減少一個日期值,該日期值將被自動地轉(zhuǎn)換到一個日期時間值:
    mysql> SELECT DATE_ADD("1999-01-01", INTERVAL 1 DAY);
           -> 1999-01-02
    mysql> SELECT DATE_ADD("1999-01-01", INTERVAL 1 HOUR);
           -> 1999-01-01 01:00:00
    
    如果你使用了確定不正確的日期,返回結(jié)果將是 NULL。如果你增加 MONTHYEAR_MONTHYEAR,并且結(jié)果日期的天比新月份的最大天數(shù)還大,那么它將被調(diào)整到新月份的最大天數(shù):
    mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);
            -> 1998-02-28
    
    注意,上面的例子中,單詞 INTERVAL 和關(guān)鍵詞 type 是不區(qū)分字母大小寫的。

    EXTRACT(type FROM date)
    EXTRACT() 函數(shù)使用與 DATE_ADD()DATE_SUB() 一致的間隔類型,但是它用于指定從日期中提取的部分,而不是進(jìn)行日期算術(shù)運算。
    mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
           -> 1999
    mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
           -> 199907
    mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
           -> 20102
    
    TO_DAYS(date)
    給出一個日期 date,返回一個天數(shù)(從 0 年開始的天數(shù)):
    mysql> SELECT TO_DAYS(950501);
            -> 728779
    mysql> SELECT TO_DAYS('1997-10-07');
            -> 729669
    
    TO_DAYS() 無意于使用先于格里高里歷法(即現(xiàn)行的陽歷)(1582)出現(xiàn)的值,因為它不考慮當(dāng)歷法改變時所遺失的天數(shù)。

    FROM_DAYS(N)
    給出一個天數(shù) N,返回一個 DATE 值:
    mysql> SELECT FROM_DAYS(729669);
            -> '1997-10-07'
    
    FROM_DAYS() 無意于使用先于格里高里歷法(1582)出現(xiàn)的值,因為它不考慮當(dāng)歷法改變時所遺失的天數(shù)。

    DATE_FORMAT(date,format)
    依照 format 字符串格式化 date 值。下面的修飾符可被用于 format 字符串中:
    修飾符 含義
    %M月的名字 (January..December)
    %W星期的名字 (Sunday..Saturday)
    %D有英文后綴的某月的第幾天 (0th, 1st, 2nd, 3rd, etc.)
    %Y年份,數(shù)字的,4 位
    %y年份,數(shù)字的,2 位
    %X周值的年份,星期日是一個星期的第一天,數(shù)字的,4 位,與 '%V' 一同使用
    %x周值的年份,星期一是一個星期的第一天,數(shù)字的,4 位,與 '%v' 一同使用
    %a縮寫的星期名 (Sun..Sat)
    %d月份中的天數(shù),數(shù)字的 (00..31)
    %e月份中的天數(shù),數(shù)字的 (0..31)
    %m月,數(shù)字的 (00..12)
    %c月,數(shù)字的 (0..12)
    %b縮寫的月份名 (Jan..Dec)
    %j一年中的天數(shù) (001..366)
    %H小時 (00..23)
    %k小時 (0..23)
    %h小時 (01..12)
    %I小時 (01..12)
    %l小時 (1..12)
    %i分鐘,數(shù)字的 (00..59)
    %r時間,12 小時 (hh:mm:ss [AP]M)
    %T時間,24 小時 (hh:mm:ss)
    %S秒 (00..59)
    %s秒 (00..59)
    %pAMPM
    %w一周中的天數(shù) (0=Sunday..6=Saturday)
    %U星期 (00..53),星期日是一個星期的第一天
    %u星期 (00..53),星期一是一個星期的第一天
    %V星期 (01..53),星期日是一個星期的第一天。與 '%X' 一起使用
    %v星期 (01..53),星期一是一個星期的第一天。與 '%x' 一起使用
    %%一個字母 “%”
    所有其它的字符不經(jīng)過解釋,直接復(fù)制到結(jié)果中:
    mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
            -> 'Saturday October 1997'
    mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
            -> '22:23:00'
    mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
                              '%D %y %a %d %m %b %j');
            -> '4th 97 Sat 04 10 Oct 277'
    mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
                              '%H %k %I %r %T %S %w');
            -> '22 22 10 10:23:00 PM 22:23:00 00 6'
    mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
            -> '1998 52'
    
    在 MySQL 3.23 中,在格式修飾符前需要字符 `%'。在更早的 MySQL 版本中,`%' 是可選的。 月份與天修飾符的范圍從零開始的原因是,在 MySQL 3.23 中,它允許存儲不完善的日期值(例如 '2004-00-00')。

    TIME_FORMAT(time,format)
    它的使用方法與上面的 DATE_FORMAT() 函數(shù)相似,但是 format 字符串只包含處理小時、分和秒的那些格式修飾符。使用其它的修飾符會產(chǎn)生一個 NULL 值或 0。

    CURDATE()
    CURRENT_DATE
    'YYYY-MM-DD'YYYYMMDD 格式返回當(dāng)前的日期值,返回的格式取決于該函數(shù)是用于字符串還是數(shù)字語境中:
    mysql> SELECT CURDATE();
            -> '1997-12-15'
    mysql> SELECT CURDATE() + 0;
            -> 19971215
    
    CURTIME()
    CURRENT_TIME
    'HH:MM:SS'HHMMSS 格式返回當(dāng)前的時間值,返回的格式取決于該函數(shù)是用于字符串還是數(shù)字語境中:
    mysql> SELECT CURTIME();
            -> '23:50:26'
    mysql> SELECT CURTIME() + 0;
            -> 235026
    
    NOW()
    SYSDATE()
    CURRENT_TIMESTAMP
    'YYYY-MM-DD HH:MM:SS'YYYYMMDDHHMMSS 格式返回當(dāng)前的日期時間值,返回的格式取決于該函數(shù)是用于字符串還是數(shù)字語境中:
    mysql> SELECT NOW();
            -> '1997-12-15 23:50:26'
    mysql> SELECT NOW() + 0;
            -> 19971215235026
    
    注意,函數(shù) NOW() 在每個查詢中只計算一次,也就是在查詢開始執(zhí)行時。這就是說,如果在一個單獨的查詢中多次引用了 NOW(),它只會給出值都是一個相同的時間。

    UNIX_TIMESTAMP()
    UNIX_TIMESTAMP(date)
    如果調(diào)用時沒有參數(shù),以無符號的整數(shù)形式返回一個 Unix 時間戳(從 '1970-01-01 00:00:00' GMT 開始的秒數(shù))。如果以一個參數(shù) date 調(diào)用 UNIX_TIMESTAMP(),它將返回該參數(shù)值從 '1970-01-01 00:00:00' GMT 開始經(jīng)過的秒數(shù)值。date 可以是一個 DATE 字符串,一個 DATETIME 字符串,一個 TIMESTAMP,或者以一個 YYMMDDYYYYMMDD 顯示的本地時間:
    mysql> SELECT UNIX_TIMESTAMP();
            -> 882226357
    mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
            -> 875996580
    
    當(dāng) UNIX_TIMESTAMP 被用于一個 TIMESTAMP 列時,函數(shù)直接返回一個內(nèi)部的時間戳值,而不進(jìn)行一個隱含地 “string-to-unix-timestamp” 轉(zhuǎn)換。如果你傳遞一個超出范圍的日期參數(shù)給 UNIX_TIMESTAMP() ,它將返回 0,但是請注意,MySQL 對其僅僅進(jìn)行基本的檢驗(年范圍 1970-2037,月份 01-12,日期 01-31)。 如果你希望減去 UNIX_TIMESTAMP() 列,你應(yīng)該需要將結(jié)果強制轉(zhuǎn)換為一有符號整數(shù)。查看章節(jié) 6.3.5 Cast 函數(shù)

    FROM_UNIXTIME(unix_timestamp [,format])
    'YYYY-MM-DD HH:MM:SS'YYYYMMDDHHMMSS 格式返回一個 unix_timestamp 參數(shù)值,返回值的形式取決于該函數(shù)使用于字符串還是數(shù)字語境。 如果 format 給出,返回值依 format 字符串被格式。format 可以包含與 DATE_FORMAT() 函數(shù)同樣的修飾符。
    mysql> SELECT FROM_UNIXTIME(875996580);
            -> '1997-10-04 22:23:00'
    mysql> SELECT FROM_UNIXTIME(875996580) + 0;
            -> 19971004222300
    mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
                                '%Y %D %M %h:%i:%s %x');
            -> '1997 23rd December 03:43:30 1997'
    
    SEC_TO_TIME(seconds)
    'HH:MM:SS'HHMMSS 格式返回參數(shù) seconds 被轉(zhuǎn)換到時分秒后的值,返回值的形式取決于該函數(shù)使用于字符串還是數(shù)字語境:
    mysql> SELECT SEC_TO_TIME(2378);
            -> '00:39:38'
    mysql> SELECT SEC_TO_TIME(2378) + 0;
            -> 3938
    
    TIME_TO_SEC(time)
    將參數(shù) time 轉(zhuǎn)換為秒數(shù)后返回:
    mysql> SELECT TIME_TO_SEC('22:23:00');
            -> 80580
    mysql> SELECT TIME_TO_SEC('00:39:38');
            -> 2378
    posted @ 2006-06-01 11:55 yanzhicun 閱讀(356) | 評論 (1)編輯 收藏
     
    54 改變?yōu)g覽器狀態(tài)欄文字提示
    1. <script?language=”JavaScript”>
    2. window.status?=?“A?new?status?message”;
    3. </script>


    55 彈出確認(rèn)提示框
    1. <script?language=”JavaScript”>
    2. var?
    3. userChoice?=?window.confirm(“Click?OK?or?Cancel”);
    4. if?(
    5. userChoice)?{?
    6. document.write(“You?chose?OK”);
    7. ?}?else?{?
    8. document.write(“You?chose?Cancel”);
    9. ?}
    10. </script>


    56 提示輸入
    1. <script?language=”JavaScript”>
    2. var?
    3. userName?=?window.prompt(“Please?Enter?Your?Name”,”Enter?Your?Name?Here”);
    4. document.write(“Your?Name?is?“?+?userName);
    5. </script>


    57 打開一個新窗口
    1. //打開一個名稱為myNewWindow的瀏覽器新窗口
    2. <script?language=”JavaScript”>
    3. window.open(“http://www.liu21st.com/”,”myNewWindow”);
    4. </script>


    58 設(shè)置新窗口的大小
    1. <script?language=”JavaScript”>
    2. window.open(“http://www.liu21st.com/”,”myNewWindow”,'height=300,width=300');
    3. </script>


    59 設(shè)置新窗口的位置
    1. <script?language=”JavaScript”>
    2. window.open(“http://www.liu21st.com/”,”myNewWindow”,'height=300,width=300,left=200,screenX=200,top=100,screenY=100');
    3. </script>


    60 是否顯示工具欄和滾動欄
    1. <script?language=”JavaScript”>
    2. window.open(“http:


    61 是否可以縮放新窗口的大小
    1. <script?language=”JavaScript”>
    2. window.open('http://www.liu21st.com/'?,?'myNewWindow',?'resizable=yes'?);</script>


    62 加載一個新的文檔到當(dāng)前窗口
    1. <a?href='#'?onClick='document.location?=?'125a.html';'?>Open?New?Document</a>


    63 設(shè)置頁面的滾動位置
    1. <script?language=”JavaScript”>
    2. if?(
    3. document.all)?{?//如果是IE瀏覽器則使用scrollTop屬性
    4. document.body.scrollTop?=?200;
    5. ?}?else?{?
    6. //如果是NetScape瀏覽器則使用pageYOffset屬性
    7. window.pageYOffset?=?200;
    8. ?}
    9. </script>


    64 在IE中打開全屏窗口
    1. <a?href='#'??onClick=”window.open('http://www.juxta.com/','newWindow','fullScreen=yes');>Open?a?full-screen?window</a>


    65 新窗口和父窗口的操作
    1. <script?language=”JavaScript”>
    2. //定義新窗口
    3. var?newWindow?=?window.open(“128a.html”,”newWindow”);
    4. newWindow.close();?//在父窗口中關(guān)閉打開的新窗口
    5. </script>
    6. 在新窗口中關(guān)閉父窗口
    7. window.opener.close()


    66 往新窗口中寫內(nèi)容
    1. <script?language=”JavaScript”>
    2. var?
    3. newWindow?=?window.open(“”,”newWindow”);
    4. newWindow.document.open();
    5. newWindow.document.write(“This?is?a?new?window”);
    6. newWIndow.document.close();
    7. </script>


    67 加載頁面到框架頁面
    1. <frameset?cols=”50%,*>
    2. <
    3. frame?name=”frame1”?src=”135a.html”>
    4. <
    5. frame?name=”frame2”?src=”about:blank”>
    6. </
    7. frameset>
    8. 在frame1中加載frame2中的頁面
    9. parent
    10. .frame2.document.location?=?“135b.html”;


    68 在框架頁面之間共享腳本
    如果在frame1中html文件中有個腳本
    1. function?doAlert()?{?
    2. window.alert(“Frame?1?is?loaded”);
    3. ?}

    那么在frame2中可以如此調(diào)用該方法
    1. <body?onLoad=”parent.frame1.doAlert();>
    2. This?is?frame?2.
    3. </body>


    69 數(shù)據(jù)公用
    可以在框架頁面定義數(shù)據(jù)項,使得該數(shù)據(jù)可以被多個框架中的頁面公用
    1. <script?language=”JavaScript”>
    2. var?
    3. persistentVariable?=?“This?is?a?persistent?value”;
    4. </script>
    5. <frameset?cols=”50%,*”>
    6. <frame?name=”frame1”?src=”138a.html”>
    7. <frame?name=”frame2”?src=”138b.html”>
    8. </frameset>


    這樣在frame1和frame2中都可以使用變量persistentVariable
    70 框架代碼庫
    根據(jù)以上的一些思路,我們可以使用一個隱藏的框架頁面來作為整個框架集的代碼庫
    1. <frameset?cols=”0,50%,*>
    2. <
    3. frame?name=”codeFrame”?src=”140code.html”>
    4. <
    5. frame?name=”frame1”?src=”140a.html”>
    6. <
    7. frame?name=”frame2”?src=”140b.html”>
    8. </
    9. frameset>

    posted @ 2006-05-23 13:46 yanzhicun 閱讀(647) | 評論 (1)編輯 收藏
     
    通常,你需要獲得當(dāng)前日期和計算一些其他的日期,例如,你的程序可能需要判斷一個月的第一天或者最后一天。你們大部分人大概都知道怎樣把日期進(jìn)行分割(年、月、日等),然后僅僅用分割出來的年、月、日等放在幾個函數(shù)中計算出自己所需要的日期!在這篇文?章里,我將告訴你如何使用DATEADD和DATEDIFF函數(shù)來計算出在你的程序中可能你要用到的一些不同日期。?

      在使用本文中的例子之前,你必須注意以下的問題。大部分可能不是所有例子在不同的機器上執(zhí)行的結(jié)果可能不一樣,這完全由哪一天是一個星期的第一天這個設(shè)置決定。第一天(DATEFIRST)設(shè)定決定了你的系統(tǒng)使用哪一天作為一周的第一天。所有以下的例?子都是以星期天作為一周的第一天來建立,也就是第一天設(shè)置為7。假如你的第一天設(shè)置不一樣,你可能需要調(diào)整這些例子,使它和不同的第一天設(shè)置相符合。你可以通過@@DATEFIRST函數(shù)來檢查第一天設(shè)置。?
      
      為了理解這些例子,我們先復(fù)習(xí)一下DATEDIFF和DATEADD函數(shù)。DATEDIFF函數(shù)計算兩個日期之間的小時、天、周、月、年等時間間隔總數(shù)。DATEADD函數(shù)計算一個日期通過給時間間隔加減來獲得一個新的日期。要了解更多的DATEDI?FF和DATEADD函數(shù)以及時間間隔可以閱讀微軟聯(lián)機幫助。?
      
      使用DATEDIFF和DATEADD函數(shù)來計算日期,和本來從當(dāng)前日期轉(zhuǎn)換到你需要的日期的考慮方法有點不同。你必須從時間間隔這個方面來考慮。比如,從當(dāng)前日期到你要得到的日期之間有多少時間間隔,或者,從今天到某一天(比如1900-1-1)之間有多少時間間隔,等等。理解怎樣著眼于時間間隔有助于你輕松的理解我的不同的日期計算例子。?
      
      一個月的第一天?
      
      第一個例子,我將告訴你如何從當(dāng)前日期去這個月的最后一天。請注意:這個例子以及這篇文章中的其他例子都將只使用DATEDIFF和DATEADD函數(shù)來計算我們想要的日期。每一個例子都將通過計算但前的時間間隔,然后進(jìn)行加減來得到想要計算的日期。?
      
      這是計算一個月第一天的SQL?腳本:?
      SELECT?DATEADD(mm,?DATEDIFF(mm,0,getdate()),?0)?
      
      我們把這個語句分開來看看它是如何工作的。最核心的函數(shù)是getdate(),大部分人都知道這個是返回當(dāng)前的日期和時間的函數(shù)。下一個執(zhí)行的函數(shù) DATEDIFF(mm,0,getdate())是計算當(dāng)前日期和“1900-01-01?00:00:00.000”這個日期之間的月數(shù)。記住:時期和時間變量和毫秒一樣是從“1900-01-01?00:00:00.000”開始計算的。這就是為什么你可以在DATEDIFF函數(shù)中指定第一個時間表達(dá)式為“0”。下一個函數(shù)是DATEADD,增加當(dāng)前日期到“1900-01-01”的月數(shù)。通過增加預(yù)定義的日期“1900-01-01”和當(dāng)前日期的月數(shù),我們可以獲得這個月的第一天。另外,計算出來的日期的時間部分將會是“00:00:00.000”。?
      
      這個計算的技巧是先計算當(dāng)前日期到“1900-01-01”的時間間隔數(shù),然后把它加到“1900-01-01”上來獲得特殊的日期,這個技巧可以用來計算很多不同的日期。下一個例子也是用這個技巧從當(dāng)前日期來產(chǎn)生不同的日期。
    本周的星期一?
      
      這里我是用周(wk)的時間間隔來計算哪一天是本周的星期一。?
      
      SELECT?DATEADD(wk,?DATEDIFF(wk,0,getdate()),?0)?
      
      一年的第一天?
      
      現(xiàn)在用年(yy)的時間間隔來顯示這一年的第一天。?
      
      SELECT?DATEADD(yy,?DATEDIFF(yy,0,getdate()),?0)?
      
      季度的第一天?
      
      假如你要計算這個季度的第一天,這個例子告訴你該如何做。?
      
      SELECT?DATEADD(qq,?DATEDIFF(qq,0,getdate()),?0)?
      
      當(dāng)天的半夜?
      
      曾經(jīng)需要通過getdate()函數(shù)為了返回時間值截掉時間部分,就會考慮到當(dāng)前日期是不是在半夜。假如這樣,這個例子使用DATEDIFF和DATEADD函數(shù)來獲得半夜的時間點。?
      
      SELECT?DATEADD(dd,?DATEDIFF(dd,0,getdate()),?0)?
      
      深入DATEDIFF和DATEADD函數(shù)計算?
      
      你可以明白,通過使用簡單的DATEDIFF和DATEADD函數(shù)計算,你可以發(fā)現(xiàn)很多不同的可能有意義的日期。?
      
      目前為止的所有例子只是僅僅計算當(dāng)前的時間和“1900-01-01”之間的時間間隔數(shù)量,然后把它加到“1900-01-01”的時間間隔上來計算出日期。假定你修改時間間隔的數(shù)量,或者使用不同的時間間隔來調(diào)用DATEADD函數(shù),或者減去時間間隔而不是增加,那么通過這些小的調(diào)整你可以發(fā)現(xiàn)和多不同的日期。?
      
      這里有四個例子使用另外一個DATEADD函數(shù)來計算最后一天來分別替換DATEADD函數(shù)前后兩個時間間隔。?
    上個月的最后一天?
      
      這是一個計算上個月最后一天的例子。它通過從一個月的最后一天這個例子上減去3毫秒來獲得。有一點要記住,在Sql?Server中時間是精確到3毫秒。這就是為什么我需要減去3毫秒來獲得我要的日期和時間。?
      
      SELECT?dateadd(ms,-3,DATEADD(mm,?DATEDIFF(mm,0,getdate()),?0))?
      
      計算出來的日期的時間部分包含了一個Sql?Server可以記錄的一天的最后時刻(“23:59:59:997”)的時間。?
      
      去年的最后一天?
      
      連接上面的例子,為了要得到去年的最后一天,你需要在今年的第一天上減去3毫秒。?
      
      SELECT?dateadd(ms,-3,DATEADD(yy,?DATEDIFF(yy,0,getdate()),?0))?
      
      本月的最后一天?
      
      現(xiàn)在,為了獲得本月的最后一天,我需要稍微修改一下獲得上個月的最后一天的語句。修改需要給用DATEDIFF比較當(dāng)前日期和“1900-01-01” 返回的時間間隔上加1。通過加1個月,我計算出下個月的第一天,然后減去3毫秒,這樣就計算出了這個月的最后一天。這是計算本月最后一天的SQL腳本。?
      
      SELECT?dateadd(ms,-3,DATEADD(mm,?DATEDIFF(m,0,getdate())+1,?0))?
      
      本年的最后一天?  
      你現(xiàn)在應(yīng)該掌握這個的做法,這是計算本年最后一天腳本?
      
      SELECT?dateadd(ms,-3,DATEADD(yy,?DATEDIFF(yy,0,getdate())+1,?0))。?
      
      本月的第一個星期一?
      
      好了,現(xiàn)在是最后一個例子。這里我要計算這個月的第一個星期一。這是計算的腳本。?
      
      select?DATEADD(wk,?DATEDIFF(wk,0,?
      dateadd(dd,6-datepart(day,getdate()),getdate())?
      ),?0)?
      
      在這個例子里,我使用了“本周的星期一”的腳本,并作了一點點修改。修改的部分是把原來腳本中“getdate()”部分替換成計算本月的第6天,在計算中用本月的第6天來替換當(dāng)前日期使得計算可以獲得這個月的第一個星期一。?
      
      總結(jié)?
      
      我希望這些例子可以在你用DATEADD和DATEDIFF函數(shù)計算日期時給你一點啟發(fā)。通過使用這個計算日期的時間間隔的數(shù)學(xué)方法,我發(fā)現(xiàn)為了顯示兩個日期之間間隔的有用歷法是有價值的。注意,這只是計算出這些日期的一種方法。要牢記,還有很多方法?可以得到相同的計算結(jié)果。假如你有其他的方法,那很不錯,要是你沒有,我希望這些例子可以給你一些啟發(fā),當(dāng)你要用DATEADD和DATEDIFF函數(shù)計算你程序可能要用到的日期時。?
    附錄,其他日期處理方法?
      
      1)去掉時分秒?
      declare?@?datetime?
      set?@?=?getdate()?--’2003-7-1?10:00:00’?
      SELECT?@,DATEADD(day,?DATEDIFF(day,0,@),?0)?
      
      2)顯示星期幾?
      select?datename(weekday,getdate())?
      
      3)如何取得某個月的天數(shù)?
      declare?@m?int?
      set?@m=2?--月份?
      select?datediff(day,’2003-’+cast(@m?as?varchar)+’-15’?,’2003-’+cast(@m+1?as?varchar)+’-15’)?
      另外,取得本月天數(shù)?
      select?datediff(day,cast(month(GetDate())?as?varchar)+’-’+cast(month(GetDate())?as?varchar)+’-15’?,cast(month(GetDate())?as?varchar)+’-’+cast(month(GetDate())+1?as?varchar)+’-15’)?
      或者使用計算本月的最后一天的腳本,然后用DAY函數(shù)區(qū)最后一天?
      SELECT?Day(dateadd(ms,-3,DATEADD(mm,?DATEDIFF(m,0,getdate())+1,?0)))?
      
      4)判斷是否閏年:?
      SELECT?case?day(dateadd(mm,?2,?dateadd(ms,-3,DATEADD(yy,?DATEDIFF(yy,0,getdate()),?0))))?when?28?then?’平年’?else?’閏年’?end?
      或者?
      select?case?datediff(day,datename(year,getdate())+’-02-01’,dateadd(mm,1,datename(year,getdate())+’-02-01’))?
      when?28?then?’平年’?else?’閏年’?end?
      
      5)一個季度多少天?
      declare?@m?tinyint,@time?smalldatetime?
      select?@m=month(getdate())?
      select?@m=case?when?@m?between?1?and?3?then?1?
      when?@m?between?4?and?6?then?4?
      when?@m?between?7?and?9?then?7?
      else?10?end?
      select?@time=datename(year,getdate())+’-’+convert(varchar(10),@m)+’-01’?
      select?datediff(day,@time,dateadd(mm,3,@time))
    posted @ 2006-04-10 11:12 yanzhicun 閱讀(1227) | 評論 (0)編輯 收藏
     
    ?Asp基本日期函數(shù) 以及 日期函數(shù)擴(kuò)展類(原創(chuàng))
    clsDateFunEx_Power by Sman & Net Fetch:
    下載文件點擊下載此文件

    Asp基本日期函數(shù):
    函數(shù) 語法 說明 示例
    Now Now() 取得系統(tǒng)當(dāng)前的日期和時間
    Date Date() 取得系統(tǒng)當(dāng)前的日期
    Time Time() 取得系統(tǒng)當(dāng)前的時間
    Year Year(Date) 取得給定日期的年份
    Month Month(Date) 取得給定日期的月份
    Day Day(Date) 取得給定日期是幾號
    Hour Hour(time) 取得給定時間是第幾小時
    Minute Minute(time) 取得給定時間是第幾分鐘
    Second Second(time) 取得給守時間是第幾秒
    WeekDay WeekDay(Date) 取得給定日期是 星期幾的整數(shù),1表示星期日,2表示星期一,依此類推
    DateDiff("Var",Var1,Var2)
    Var:日期或時間間隔因子,有如下參數(shù):yyyy 年 m月 d 日 ww星期 h小時 s秒
    Var1:第一個日期或時間
    Var2:第二個日期或時間,比Var1晚 計算兩個日期或時間的間隔

    DateAdd("Var",Var1,Var2)
    Var:日期或時間間隔因子:
    Var1:日期或時間間隔倍數(shù)
    Var2:日期或時間的基準(zhǔn) 對兩個日期或時間作加法
    如果計算的日期是在公元 100 年之前,則會產(chǎn)生錯誤。

    FormatDateTime FormatDateTime(Date,vbShortDate) 轉(zhuǎn)化為短日期格式 FromatDateTime(Date(),vbLongDate) "以長日期格式顯示
    FormatDateTime(Date,vbLongDate) 轉(zhuǎn)化為長日期格式
    FormatDateTime(Date,vbShortTime) 轉(zhuǎn)化為短時間格式
    FormatDateTime(Date,vbLongTime) 轉(zhuǎn)化為長時間格式

    日期函數(shù)擴(kuò)展類代碼 (clsDateFunEx_Power by Sman & Net Fetch):

    程序代碼 程序代碼
    <%
    '轉(zhuǎn)發(fā)時請保留此聲明信息,這段聲明不并會影響你的速度!
    '************************** 【日期擴(kuò)展類】Ver 0.1.0 ********************************
    '開發(fā)人:??Sman、Net Fetch
    '開發(fā)日期:??2005-11-11
    '版本號:??Ver 0.1.0

    '官方網(wǎng)站:http://www.sman.cnhttp://www.ad0.cn
    '電子郵件:huihui3030@126.com、Ad0@Ad0.Cn QQ:19341293 32050450
    '版權(quán)聲明:版權(quán)沒有,盜版不究,源碼公開,歡迎盜版,歡迎你到官方網(wǎng)站來尋求支持。
    '如有任何改進(jìn)之處,麻煩轉(zhuǎn)發(fā)或者反饋一份到 huihui3030@126.com、Ad0@Ad0.Cn,Thanks!
    '詳細(xì)使用說明或范例請見下載附件或到官方站點或Email聯(lián)系下載!
    '************************************************************************************

    Class DateFunEx

    Private d_

    ?Private Sub class_initialize()
    ??d_ = ""
    ?End Sub
    ?
    Public Property Let setDate(strDate) '傳入日期參數(shù) strDate
    d_ = strDate
    End Property
    ?
    ?Public Property Get Version
    ??Version = "Copyright ? Date Function Extend Ver 0.1.0<br />" & _
    ????"Power by <a href='http://www.sman.cn' target='_blank'>Sman</a> " & _
    ????" & <a href='mailto:NetFetchStudio@163.com' target='_blank'>Net Fetch</a>"
    ?End Property

    Sub FormatDate()
    ??On Error Resume Next
    ??If IsNumeric(d_) Then
    ???d_ = Cint(d_)
    ???If len(d_)< 3 Then d_ = "20" & right("0"&d_,2)
    ???d_ = d_ & "-1"
    ??End If
    ??d_ = cDate(d_)
    End Sub??
    '------------------------------
    ' 功能說明:算第幾周的星期幾是幾號
    ' 參數(shù)說明:y 年,w周,week 星期 (星期一1 星期天7) FirstDayofWeek 每周的第一天(詳細(xì)設(shè)置請參照VBS手冊)
    ' 例 2005年40周星期天 GetWeekDate(2005,40,7)
    '------------------------------
    Public Function GetWeekDate(y, w, DayofWeek)
    ??Call FormatDate()
    Dim NewYearDay,FirstDayofWeek
    FirstDayofWeek = 2
    NewYearDay = CDate(y & "-1-1") '元旦
    GetWeekDate = ((NewYearDay - Weekday(NewYearDay, FirstDayofWeek)) + (w - 1) * 7 + DayofWeek)
    ?End Function

    '------------------------------
    ' 功能說明:獲得某年某月的天數(shù)
    ' 參數(shù)說明:d_ 年-月-日
    ' 例 2005年10月 GetMonthDayCount("2005-10-11")(日可要可不要)
    '------------------------------
    Public Function GetMonthDayCount()
    ??Call FormatDate()
    GetMonthDayCount = DateDiff("d", d_, DateAdd("m", 1, d_))
    End Function

    '------------------------------
    ' 功能說明:得到某年某月的第一天
    ' 相關(guān)函數(shù):GetMonthFirstDay
    ' 例 本月 GetMonthFirstDay(date)(日可要可不要) 上月 GetMonthFirstDay(dateadd("m",-1,date)) 以此類推
    '------------------------------
    Public Function GetMonthFirstDay()
    ??Call FormatDate()
    GetMonthFirstDay = CDate( Year(d_) & "-" & Month(d_) & "-1")
    End Function
    ?
    '------------------------------
    ' 功能說明:得到某年的某月的最后一天
    ' 參數(shù)說明:d_ 年-月-日
    ' 關(guān)聯(lián)函數(shù):GetMonthDayCount
    ' 例 本月 GetMonthLastDay(date)(日可要可不要) 上月 GetMonthLastDay(dateadd("m",-1,date)) 以此類推
    '------------------------------
    Public Function GetMonthLastDay()
    ??Call FormatDate()
    GetMonthLastDay = CDate( Year(d_) & "-"&Month(d_) & "-" & DateDiff("d", d_, DateAdd("m", 1, d_)))
    End Function

    '------------------------------
    ' 功能說明:某日所在的周的第一天的日期
    ' 相關(guān)函數(shù):GetWeekDate
    ' 例 本周 WeekFirstDay(date) 上周 WeekFirstDay(dateadd("ww",-1,date)) 以此類推
    '------------------------------
    Public Function WeekFirstDay()
    ??Call FormatDate()
    WeekFirstDay = GetWeekDate(Year(d_), DatePart("ww", d_), 1)
    End Function

    '------------------------------
    ' 功能說明:某日所在的周的第最后一天的日期
    ' 相關(guān)函數(shù):GetWeekDate
    ' 例 本周 WeekLastDay(date) 上周 WeekLastDay(dateadd("ww",-1,date)) 以此類推
    '------------------------------
    Public Function WeekLastDay()
    ??Call FormatDate()
    WeekLastDay = GetWeekDate(Year(d_), DatePart("ww", d_), 7)
    End Function
    ?
    End Class
    %>


    調(diào)用代碼:
    程序代碼 程序代碼
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <% Option Explicit %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>Test_clsDateFunEx</title>
    </head>

    <body>
    <!--#include file="clsDateFunEx.asp" -->
    <%
    Dim myDateFun,strDate
    strDate = "2005-6"
    Set myDateFun = new DateFunEx
    ?myDateFun.setDate = strDate
    ?Response.write "2005年第5周的星期天是幾號:<br>" & _
    ??????String(20, " ") & myDateFun.GetWeekDate(2005,10,7) &"<br>"
    ?Response.Write "本月的天數(shù):<br>"&_
    ??????String(20, " ") & myDateFun.GetMonthDayCount & "<br>"
    ?Response.Write "本月的第一天:<br>"&_
    ??????String(20, " ") & myDateFun.GetMonthFirstDay & "<br>"
    ?myDateFun.setDate = Now()
    ?Response.Write "本月的最后一天:<br>"&_
    ??????String(20, " ") & myDateFun.GetMonthLastDay & "<br>"
    ?Response.Write "本月所在的周的第一天的日期:<br>"&_
    ??????String(20, " ") & myDateFun.WeekFirstDay & "<br>"
    ?Response.Write "本月所在的周的第最后一天的日期:<br>" & _
    ??????String(20, " ") & myDateFun.WeekLastDay & "<br>"
    ?Response.Write "<br><br><br><div style='padding-left:200px;font-size:12px;'>" & myDateFun.Version & "</div><br>"
    Set myDateFun = Nothing
    %>
    </body>
    </html>


    程序代碼 程序代碼
    '*************************************
    '日期轉(zhuǎn)換函數(shù)
    '*************************************
    Function DateToStr(DateTime,ShowType)
    ?Dim DateMonth,DateDay,DateHour,DateMinute,DateWeek,DateSecond
    ?Dim FullWeekday,shortWeekday,Fullmonth,Shortmonth,TimeZone1,TimeZone2
    ?TimeZone1="+0800"
    ?TimeZone2="+08:00"
    ?FullWeekday=Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
    ?shortWeekday=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
    Fullmonth=Array("January","February","March","April","May","June","July","August","September","October","November","December")
    Shortmonth=Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

    ?DateMonth=Month(DateTime)
    ?DateDay=Day(DateTime)
    ?DateHour=Hour(DateTime)
    ?DateMinute=Minute(DateTime)
    ?DateWeek=weekday(DateTime)
    ?DateSecond=Second(DateTime)
    ?If Len(DateMonth)<2 Then DateMonth="0"&DateMonth
    ?If Len(DateDay)<2 Then DateDay="0"&DateDay
    ?If Len(DateMinute)<2 Then DateMinute="0"&DateMinute
    ?Select Case ShowType
    ?Case "Y-m-d"
    ??DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay
    ?Case "Y-m-d H:I A"
    ??Dim DateAMPM
    ??If DateHour>12 Then
    ???DateHour=DateHour-12
    ???DateAMPM="PM"
    ??Else
    ???DateHour=DateHour
    ???DateAMPM="AM"
    ??End If
    ??If Len(DateHour)<2 Then DateHour="0"&DateHour?
    ??DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay&" "&DateHour&":"&DateMinute&" "&DateAMPM
    ?Case "Y-m-d H:I:S"
    ??If Len(DateHour)<2 Then DateHour="0"&DateHour?
    ??If Len(DateSecond)<2 Then DateSecond="0"&DateSecond
    ??DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay&" "&DateHour&":"&DateMinute&":"&DateSecond
    ?Case "YmdHIS"
    ??DateSecond=Second(DateTime)
    ??If Len(DateHour)<2 Then DateHour="0"&DateHour?
    ??If Len(DateSecond)<2 Then DateSecond="0"&DateSecond
    ??DateToStr=Year(DateTime)&DateMonth&DateDay&DateHour&DateMinute&DateSecond?
    ?Case "ym"
    ??DateToStr=Right(Year(DateTime),2)&DateMonth
    ?Case "d"
    ??DateToStr=DateDay
    Case "ymd"
    DateToStr=Right(Year(DateTime),4)&DateMonth&DateDay
    Case "mdy"
    Dim DayEnd
    select Case DateDay
    Case 1
    DayEnd="st"
    Case 2
    DayEnd="nd"
    Case 3
    DayEnd="rd"
    Case Else
    DayEnd="th"
    End Select
    DateToStr=Fullmonth(DateMonth-1)&" "&DateDay&DayEnd&" "&Right(Year(DateTime),4)
    Case "w,d m y H:I:S"
    ??DateSecond=Second(DateTime)
    ??If Len(DateHour)<2 Then DateHour="0"&DateHour?
    ??If Len(DateSecond)<2 Then DateSecond="0"&DateSecond
    DateToStr=shortWeekday(DateWeek-1)&","&DateDay&" "& Left(Fullmonth(DateMonth-1),3) &" "&Right(Year(DateTime),4)&" "&DateHour&":"&DateMinute&":"&DateSecond&" "&TimeZone1
    Case "y-m-dTH:I:S"
    ??If Len(DateHour)<2 Then DateHour="0"&DateHour?
    ??If Len(DateSecond)<2 Then DateSecond="0"&DateSecond
    ??DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay&"T"&DateHour&":"&DateMinute&":"&DateSecond&TimeZone2
    ?Case Else
    ??If Len(DateHour)<2 Then DateHour="0"&DateHour
    ??DateToStr=Year(DateTime)&"-"&DateMonth&"-"&DateDay&" "&DateHour&":"&DateMinute
    ?End Select
    End Function
    posted @ 2006-04-10 11:09 yanzhicun 閱讀(1522) | 評論 (1)編輯 收藏
     
    網(wǎng)站的訪問量問題,一直是網(wǎng)上最熱門的話題之一,同樣也是最難的掌握的知識之一。如果你的網(wǎng)站完成了,做的無論多完美,不去靠推廣來提高訪問量,充其量只是做給自己看的。就一些網(wǎng)站推廣積累的經(jīng)驗,談?wù)勔韵乱恍┗痉椒ā?
      首先要說的不是如何去推廣,而是關(guān)于你的網(wǎng)站定位問題。

      如果你的網(wǎng)站只是介紹一些個人小資料之類的(當(dāng)然,初期的個人主頁都是如此),你可以先嘗試在內(nèi)容方面做一些規(guī)劃,也就是說你沒辦法做全,就想辦法做的更專一點或者說更有點特色。否則,網(wǎng)站推廣以及以下的文字對你來說是毫無意義的。

      比如你做文學(xué)內(nèi)容的主頁,光有你自己的作品是遠(yuǎn)遠(yuǎn)不夠的,不妨去找一些你喜歡的內(nèi)容,然后分類,這樣你的主頁看上去會變的更充實更專業(yè)。

      其次,如果說光有內(nèi)容,還是不夠的,關(guān)鍵的問題還在于主頁的美工設(shè)計,整體的框架結(jié)構(gòu)是否合理,用圖是否與你的主頁內(nèi)容相配合,整體用色是否協(xié)調(diào)等等。這些東西就是你主頁的門面,如果你不僅僅是滿足于開個大排擋而想做成豪華大酒樓的話,就應(yīng)該去學(xué)會這些東西,不一定要你精通photoshop,但你可以選擇一些上手操作容易的圖象處理軟件,如ULEAD等。

      對于主頁來說,美工方面至少有一半以上的分量,有些很不錯的主頁內(nèi)容很少,但美工方面卻做的非常出色,這同樣會是一個成功的主頁。

      當(dāng)你網(wǎng)頁內(nèi)容版面規(guī)劃設(shè)計的差不多的時候,你就會有足夠的信心去推廣你的網(wǎng)站,以下談一談推廣的一些技巧和經(jīng)驗。

      1.登記搜索引擎

      關(guān)于此方法,想必也不用多說,如何使用搜索引擎是每個網(wǎng)民都必須掌握的技能,登記搜索引擎是最原始也最行之有效的網(wǎng)站推廣方法。找一些大的搜索引擎去登記吧,國內(nèi)的新浪,搜狐,Goyoyo,Yahoo等一些大的搜索引擎都是你必須去登記的,辛好這一切都是免費的,簡單的填寫一些表格就能做到一勞永逸。當(dāng)然,如果你有多個鏡像地址,不妨每個都去登記下,能給你帶來意想不到的效果。

      2.主動宣傳

      通過EMAIL,聊天室,BBS等一些手段來宣傳,如果你在網(wǎng)上瀏覽的時候見到聊天室就進(jìn)去胡亂發(fā)幾條你的主頁信息,見到留言本就留言為你的主頁做一些宣傳,同樣也可以使用一些郵件群發(fā)軟件或者加入一些大的郵件列表來發(fā)布你的主頁信息(使用郵件群發(fā)一定要注意文明用語,否則只會起到相反的效果)。這些辦法盡管操作起來費時費力,但卻是最能起直接效果的。

      3.友情鏈接

      通過友情鏈接增加訪問量是目前個人主頁普遍采取的方法,不論是文字,LOGO鏈接,你一定要找一些訪問量比較大的網(wǎng)站來交換鏈接,并且寫信給對方要求把位置放較靠前,如此才能取得比較好的效果,對于那些下拉式菜單的友情鏈接,不做也罷,除非對方的訪問量非常大。

      尤其要注意的是,建站初期你的訪問量很小,這個時候不適合做友情鏈接,因為訪問量太小人家是不會愿意跟你交換鏈接的,除非他的訪問量跟你一樣的可憐,但那樣的友情鏈接的效果是微乎其微的,畢竟,你首頁留給友情鏈接的空間是有限的,盡量留給那些能給你帶來更多訪問量的站點。尤其是logo鏈接一定要注意,因為大量的logo鏈接會讓你的主頁頁面空間變少速度變慢。

      4.網(wǎng)站速度

      這個到底是不是屬于主頁推廣的范疇暫時不去討論,但網(wǎng)站的速度會影響到瀏覽量這卻是千真萬確的,甚至在某些方面,可以這么說,網(wǎng)站的訪問量取決與網(wǎng)站的速度,當(dāng)然,這個只是相對而言,設(shè)想一下,幾分鐘才打開一個頁面的網(wǎng)站會有多少瀏覽者愿意多呆一秒呢?

      甚至?xí)陧撁孢€沒完全打開時就已經(jīng)失去耐心,這樣就意味著你失去了一個本來已經(jīng)很不容易才得到的瀏覽量。所以,一定要注意,在選擇免費空間的時候,一定要選擇速度最快的,當(dāng)然,每個地方的速度都不一樣,你可以通過調(diào)查綜合考慮這些因素。

      5.收藏夾

      毫無疑問,網(wǎng)站訪問量的大小很大程度上取決與訪問者的收藏夾,如何讓你的網(wǎng)頁添加到瀏覽者的收藏夾是個很值得你去花時間研究的問題。最普遍的無非是把你的網(wǎng)站做的更出色更吸引人,另外還能借助一些java使用彈出窗口提醒瀏覽者加入收藏夾,這個辦法同樣很有效。

      6.使用HTML語言

      這個辦法是針對搜索引擎而言的,方法是打開主頁的源文件,在〈HEAD〉與〈/HEAD〉中加入代碼〈META HTTP-EQUIV=“Keywords”CONTENT=“1,2,3,……,TEXT/HTML;CHARSET=gb2312”〉其中 content后面的1,2,3,均是與主頁主題內(nèi)容相關(guān)的關(guān)鍵詞(當(dāng)然,你也可以選擇一些熱門詞,即使你的主頁里沒有這些內(nèi)容,這樣總有點欺騙別人的感覺,但無論怎么說,這也是主頁推廣的好辦法)。當(dāng)一些搜索引擎工作時,您的關(guān)鍵詞與搜索詞如果相匹配,您的網(wǎng)址便成為搜索結(jié)果之一。所以要選擇好關(guān)鍵詞,而且越多越好,這樣,你的網(wǎng)址就更容易被搜索到。

      7.加入品網(wǎng)和網(wǎng)站排名

      如今網(wǎng)上越來越多的品網(wǎng)和排名網(wǎng)站,你可以見一個加入一個,這樣對你的訪問量是大有幫助的,如果你的網(wǎng)站做的夠出色,自然就能獲得很高的回報;另外就是一些零零總總的排行榜,趕快去加入吧,盡管可能你排在最后一位,但它卻同樣能給你帶來眾多訪問量。

      8.交換廣告

      這個方法可能是最有用也最講究技巧的方法了。你可曾想到過,你的主頁本身也能給你帶來訪問量,我見過很多個人主頁頁面上空空的,何不利用這些寶貴的頁面空間去帶來更訪問量呢?可能你還在抱怨你主頁的內(nèi)容太少,當(dāng)然,加入免費的廣告交換對與你的主頁來說,不但能增加你主頁的內(nèi)容,而且更重要的是能給你帶來更多的訪問量。

      很多文章在討論主頁宣傳的時候,對這一點往往是很忽略的,認(rèn)為廣告交換效果不理想。但你可知道,一個瀏覽者進(jìn)入你的站點開始,他不但為你創(chuàng)造了一個訪問量,而且,更重要的是他還能為你創(chuàng)造廣告交換最基本的東西,你可以嘗試把一些點擊類的廣告交換(通常為文本交換,isme,太極鏈,七八鏈等)放到網(wǎng)頁的顯眼位置,這樣,當(dāng)瀏覽者瀏覽完你的網(wǎng)頁,他想離開的時候,如果這些廣告交換有他感興趣的內(nèi)容,他會選擇點擊,而這一個點擊又能給你帶來一個瀏覽量。

      如此循環(huán),你的訪問量只會與日俱增。另外,顯示類的廣告交換也有文本和banner之分,通常文本類的廣告交換能起到更好的效果,同樣要取決與你的廣告詞用語是否夠吸引人,如果不清楚該怎么做,去學(xué)一些人家的就行。

      banner交換也是一樣,自己做的不好不吸引人,用別人的,而且記得一定要經(jīng)常更換。(使用這個方法的時候要注意千萬不要放太多的交換廣告,選擇一些效果比較好顯示速度比較快的就行了,否則會嚴(yán)重影響到你的主頁瀏覽速度。)落不明

      通過使用以上各種方法之后,你主頁的訪問量必定會有所增加,但還要注意的就是你的網(wǎng)站必需不斷更新不斷充實,哪怕是換個顏色,換幾行字,這樣才能在穩(wěn)定訪問量的基礎(chǔ)上不斷增加訪問量。另外還有很多很多的技巧,需要你在不斷實踐中摸索,比如面對眾多的廣告交換,哪些才是對你最有用的,哪些的廣告交換效果不理想,哪些友情鏈接效果好哪些不好等等,這些都是要你在不斷實踐中去熟悉掌握的
    posted @ 2006-04-04 13:23 yanzhicun 閱讀(107) | 評論 (0)編輯 收藏
     
    面目全非
    1,當(dāng)你轉(zhuǎn)別人技術(shù)帖或其它帖時請把標(biāo)題稍微改下,改成大家容易搜索的祠,這樣可以提高搜索上的排名,不然一大推同樣的標(biāo)題,你很難排在前面。如果你懂的SEO優(yōu)化可以跳過此條

    乾坤大挪移
    2,剛開始時,經(jīng)常變換你論壇的程序,當(dāng)你發(fā)現(xiàn)你的論壇帖子基本被搜索收錄完后就轉(zhuǎn)換程序,如你從DZ變?yōu)镻HPWIND時,就再建幾個跳轉(zhuǎn)頁面,頁面名為forumdisplay.php和viewthread.php全部轉(zhuǎn)到你的論壇主頁面上,這樣的用意不用我說了吧,多轉(zhuǎn)幾次,流量上量的很快

    3,論壇功能里開啟注冊發(fā)送歡迎郵件(不是短消息),這樣很多人注冊了你的論壇,下次他忘了或沒有不上的時候,他看信件的時候看到了也常會點擊進(jìn)來再轉(zhuǎn)轉(zhuǎn)看有什么東西沒有的。

    4,經(jīng)常在論壇搞些活動,如月灌水明星,周灌水明星可以得到什么禮品之類的,禮品可以是QQ,8位數(shù)的現(xiàn)在不值錢,但是很多人沒有卻不知怎么得來,可以多搞些來送

    5,如果你的論壇有足夠的管理人員可以做幾個垃圾動畫(隨便整個盜QQ,或使用國外的什么東西的教程估計都會做吧),動畫必須不怎么能讓你看懂,讓他們到論壇來問你,可他們剛學(xué)會點東西,就是放木馬,就要小心木馬帖了,誰會愿意呆在不安全的地方呢`

    6,堅持每天QQ加幾個好友,跟他(她)們聊會,然后請他(她)們幫忙,說你有個論壇,讓他(她)們幫忙宣傳宣傳

    7,你的QQ上的哪些群千萬不要退掉,全部保留著,如果你覺的麻煩,可以拒絕看到,你經(jīng)常變動的話,現(xiàn)在QQ新版本有了同時應(yīng)用到服務(wù)器上,每天在論壇選幾個人氣帖發(fā)到群里,標(biāo)題,網(wǎng)址

    8,在網(wǎng)吧上網(wǎng)的話隨身帶些打印好的廣告小紙條,在網(wǎng)吧到處帖些,注意別讓網(wǎng)管發(fā)現(xiàn)哦

    9,到其它論壇拉人氣,如果不想做的太絕可以發(fā)些好帖,簽名處的簽名設(shè)置成誘人的

    10,多建些垃圾站,要多垃圾有多垃圾也可以,只要能讓人家搜索進(jìn)來就可以了,在垃圾站里放彈窗放廣告做轉(zhuǎn)向等等

    11,QQ里面常改名子,當(dāng)你改完后很多人不知道是誰,會問你什么的,改完名子后就設(shè)個自動回復(fù),自動回復(fù)內(nèi)容當(dāng)然是你的論壇AD啦

    12,文本連,現(xiàn)在很多這樣的連注冊就送多少流量,申請些二級米去注冊,這也能帶來不少流量的

    13,網(wǎng)摘,如CHINABBS,QIHOO等等,常去哪推薦帖子,有時你推薦一個帖子一天能帶來上萬IP,你在這些地方推存的好帖子,會有很多其它的小網(wǎng)摘去收錄去采集,到后來就更多啦

    14,黃金廣告位
    posted @ 2006-04-04 13:19 yanzhicun 閱讀(116) | 評論 (0)編輯 收藏
     

    SQL Server支持的數(shù)據(jù)類型

    數(shù)據(jù)類型
    說明
    BIGINT 從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數(shù)據(jù)(整數(shù))。
    INT 從 -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) 的整型數(shù)據(jù)(整數(shù))。
    SMALLINT 從 2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型數(shù)據(jù)。
    TINYINT 從 0 到 255 的整型數(shù)據(jù)。
    BIT 非 1 即 0 的整型數(shù)據(jù)。
    DECIMAL 從 -10^38 +1 到 10^38 -1 的固定精度和標(biāo)度的數(shù)字?jǐn)?shù)據(jù)。
    NUMERIC 功能上相當(dāng)于十進(jìn)制數(shù)。
    MONEY 從 -2^63 (-922,337,203,685,477.5808) 到 2^63 - 1 (+922,337,203,685,477.5807) 的貨幣型數(shù)據(jù),精確到貨幣單位的萬分之一。
    SMALLMONEY 從 -214,748.3648 到 +214,748.3647 的貨幣型數(shù)據(jù),精確到貨幣單位的萬分之一。
    FLOAT 從 -1.79E + 308 到 1.79E + 308 的浮點精度數(shù)字?jǐn)?shù)據(jù)。
    REAL 從 -3.40E + 38 到 3.40E + 38 的浮點精度數(shù)字?jǐn)?shù)據(jù)。
    DATETIME 從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數(shù)據(jù),精確到三百分之一秒(3.33 毫秒)。
    SMALLDATETIME 從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時間數(shù)據(jù),精確到一分鐘。
    CHAR 最大長度 8000 個字符的固定長度非 Unicode 字符數(shù)據(jù)。
    VARCHAR 最大長度 8000 個字符的可變長度非 Unicode 字符數(shù)據(jù)。
    TEXT 最大長度 2^31 - 1 (2,147,483,647) 個字符的可變長度非 Unicode 數(shù)據(jù)。
    NCHAR 最大長度 4,000 個字符的固定長度 Unicode 數(shù)據(jù)。
    NVARCHAR 最大長度 4000 個字符的可變長度 Unicode 數(shù)據(jù)。sysname 是系統(tǒng)提供的用戶定義數(shù)據(jù)類型,功能上相當(dāng)于 nvarchar(128),用于引用數(shù)據(jù)庫對象名稱。
    NTEXT 最大長度 2^31 - 1 (1,073,741,823) 個字符的可變長度 Unicode 數(shù)據(jù)。
    BINARY 最大長度 8,000 個字節(jié)的固定長度二進(jìn)制數(shù)據(jù)。
    VARBINARY 最大長度 8,000 個字節(jié)的可變長度二進(jìn)制數(shù)據(jù)。
    IMAGE 最大長度 2^31 - 1 (2,147,483,647) 字節(jié)的可變長度二進(jìn)制數(shù)據(jù)。
    CURSOR 對光標(biāo)的引用。
    SQL_VARIANT 存儲 SQL Server 支持的數(shù)據(jù)類型(textntext、timestampsql_variant 除外)值的數(shù)據(jù)類型。
    TABLE 用于存儲結(jié)果集合供以后處理的特殊數(shù)據(jù)類型。
    TIMESTAMP 整個數(shù)據(jù)庫中都唯一的一個數(shù)字,隨著行的每次更新而更新。
    UNIQUEIDENTIFIER 全局唯一標(biāo)識符 (GUID)。

    (1)二進(jìn)制數(shù)據(jù)類型

       二進(jìn)制數(shù)據(jù)包括 Binary、Varbinary 和 Image
       Binary 數(shù)據(jù)類型既可以是固定長度的(Binary),也可以是變長度的。
       Binary[(n)] 是 n 位固定的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4 個字節(jié)。
       Varbinary[(n)] 是 n 位變長度的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4個字節(jié),不是n 個字節(jié)。
       在 Image 數(shù)據(jù)類型中存儲的數(shù)據(jù)是以位字符串存儲的,不是由 SQL Server 解釋的,必須由應(yīng)用程序來解釋。例如,應(yīng)用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數(shù)據(jù)存儲在 Image 數(shù)據(jù)類型中。

    (2)字符數(shù)據(jù)類型

       字符數(shù)據(jù)的類型包括 Char,Varchar 和 Text
       字符數(shù)據(jù)是由任何字母、符號和數(shù)字任意組合而成的數(shù)據(jù)。
       Varchar 是變長字符數(shù)據(jù),其長度不超過 8KB。Char 是定長字符數(shù)據(jù),其長度最多為 8KB。超過 8KB 的ASCII 數(shù)據(jù)可以使用Text數(shù)據(jù)類型存儲。例如,因為 Html 文檔全部都是 ASCII 字符,并且在一般情況下長度超過 8KB,所以這些文檔可以 Text 數(shù)據(jù)類型存儲在SQL Server 中。

    (3)Unicode 數(shù)據(jù)類型

       Unicode 數(shù)據(jù)類型包括 Nchar,Nvarchar 和Ntext
       在 Microsoft SQL Server 中,傳統(tǒng)的非 Unicode 數(shù)據(jù)類型允許使用由特定字符集定義的字符。在 SQL Server安裝過程中,允許選擇一種字符集。使用 Unicode 數(shù)據(jù)類型,列中可以存儲任何由Unicode 標(biāo)準(zhǔn)定義的字符。在 Unicode 標(biāo)準(zhǔn)中,包括了以各種字符集定義的全部字符。使用Unicode數(shù)據(jù)類型,所戰(zhàn)勝的窨是使用非 Unicode 數(shù)據(jù)類型所占用的窨大小的兩倍。
       在 SQL Server 中,Unicode 數(shù)據(jù)以 Nchar、Nvarchar 和 Ntext 數(shù)據(jù)類型存儲。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當(dāng)列的長度變化時,應(yīng)該使用Nvarchar 字符類型,這時最多可以存儲 4000 個字符。當(dāng)列的長度固定不變時,應(yīng)該使用 Nchar 字符類型,同樣,這時最多可以存儲4000 個字符。當(dāng)使用 Ntext 數(shù)據(jù)類型時,該列可以存儲多于 4000 個字符。

    (4)日期和時間數(shù)據(jù)類型

       日期和時間數(shù)據(jù)類型包括 Datetime 和 Smalldatetime兩種類型
       日期和時間數(shù)據(jù)類型由有效的日期和時間組成。例如,有效的日期和時間數(shù)據(jù)包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一個數(shù)據(jù)類型是日期在前,時間在后一個數(shù)據(jù)類型是霎時間在前,日期在后。在 Microsoft SQL Server中,日期和時間數(shù)據(jù)類型包括Datetime 和 Smalldatetime 兩種類型時,所存儲的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結(jié)束(每一個值要求 8 個存儲字節(jié))。使用 Smalldatetime 數(shù)據(jù)類型時,所存儲的日期范圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結(jié)束(每一個值要求 4 個存儲字節(jié))。
       日期的格式可以設(shè)定。設(shè)置日期格式的命令如下:
       Set DateFormat {format | @format _var|
       其中,format | @format_var 是日期的順序。有效的參數(shù)包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認(rèn)情況下,日期格式為MDY。
       例如,當(dāng)執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當(dāng)執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式

    (5)數(shù)字?jǐn)?shù)據(jù)類型

       數(shù)字?jǐn)?shù)據(jù)只包含數(shù)字。數(shù)字?jǐn)?shù)據(jù)類型包括正數(shù)和負(fù)數(shù)、小數(shù)(浮點數(shù))和整數(shù)
       整數(shù)由正整數(shù)和負(fù)整數(shù)組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數(shù)存儲的數(shù)據(jù)類型是    Int,Smallint和 Tinyint。Int 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍大于 Smallint 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍,而 Smallint 據(jù)類型存儲數(shù)據(jù)的范圍大于Tinyint 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍。使用 Int 數(shù)據(jù)狗昔存儲數(shù)據(jù)的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個字節(jié)存儲空間)。使用 Smallint 數(shù)據(jù)類型時,存儲數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個值要求2個字節(jié)存儲空間)。使用Tinyint 數(shù)據(jù)類型時,存儲數(shù)據(jù)的范圍是從0 到255(每一個值要求1個字節(jié)存儲空間)。
       精確小婁數(shù)據(jù)在 SQL Server 中的數(shù)據(jù)類型是 Decimal 和 Numeric。這種數(shù)據(jù)所占的存儲空間根據(jù)該數(shù)據(jù)的位數(shù)后的位數(shù)來確定。
       在SQL Server 中,近似小數(shù)數(shù)據(jù)的數(shù)據(jù)類型是 Float 和 Real。例如,三分之一這個分?jǐn)?shù)記作。3333333,當(dāng)使用近似數(shù)據(jù)類型時能準(zhǔn)確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲在該列中數(shù)據(jù)不完全一樣。

    (6)貨幣數(shù)據(jù)表示正的或者負(fù)的貨幣數(shù)量 。

       在 Microsoft SQL Server 中,貨幣數(shù)據(jù)的數(shù)據(jù)類型是Money 和 Smallmoney

      Money數(shù)據(jù)類型要求 8 個存儲字節(jié),Smallmoney 數(shù)據(jù)類型要求 4 個存儲字節(jié)。

    (7)特殊數(shù)據(jù)類型

       特殊數(shù)據(jù)類型包括前面沒有提過的數(shù)據(jù)類型。特殊的數(shù)據(jù)類型有3種,即    Timestamp、Bit 和 Uniqueidentifier
       Timestamp 用于表示SQL Server 活動的先后順序,以二進(jìn)投影的格式表示。Timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日期和時間沒有關(guān)系。
       Bit 由 1 或者 0 組成。當(dāng)表示真或者假、ON 或者 OFF 時,使用 Bit 數(shù)據(jù)類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數(shù)據(jù)類型的列中。
       Uniqueidentifier 由 16 字節(jié)的十六進(jìn)制數(shù)字組成,表示一個全局唯一的。當(dāng)表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標(biāo)識號列使用這種數(shù)據(jù)類型可以區(qū)別不同的客戶。

    2.用戶定義的數(shù)據(jù)類型

       用戶定義的數(shù)據(jù)類型基于在 Microsoft SQL Server 中提供的數(shù)據(jù)類型。當(dāng)幾個表中必須存儲同一種數(shù)據(jù)類型時,并且為保證這些列有相同的數(shù)據(jù)類型、長度和可空性時,可以使用用戶定義的數(shù)據(jù)類型。例如,可定義一種稱為   postal_code 的數(shù)據(jù)類型,它基于 Char 數(shù)據(jù)類型。
       當(dāng)創(chuàng)建用戶定義的數(shù)據(jù)類型時,必須提供三個數(shù):數(shù)據(jù)類型的名稱、所基于的系統(tǒng)數(shù)據(jù)類型和數(shù)據(jù)類型的可空性。

    (1)創(chuàng)建用戶定義的數(shù)據(jù)類型

       創(chuàng)建用戶定義的數(shù)據(jù)類型可以使用 Transact-SQL 語句。系統(tǒng)存儲過程 sp_addtype 可以來創(chuàng)建用戶定義的數(shù)據(jù)類型。其語法形式如下:
       sp_addtype {type},[,system_data_bype][,'null_type']
       其中,type 是用戶定義的數(shù)據(jù)類型的名稱。system_data_type 是系統(tǒng)提供的數(shù)據(jù)類型,例如 Decimal、Int、Char   等等。 null_type 表示該數(shù)據(jù)類型是如何處理空值的,必須使用單引號引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
       例子:
       Use cust
       Exec sp_addtype ssn,'Varchar(11)',"Not Null'
       創(chuàng)建一個用戶定義的數(shù)據(jù)類型 ssn,其基于的系統(tǒng)數(shù)據(jù)類型是變長為11 的字符,不允許空。
       例子:
       Use cust
       Exec sp_addtype birthday,datetime,'Null'
       創(chuàng)建一個用戶定義的數(shù)據(jù)類型 birthday,其基于的系統(tǒng)數(shù)據(jù)類型是 DateTime,允許空。
       例子:
       Use master
       Exec sp_addtype telephone,'varchar(24),'Not Null'
       Eexc sp_addtype fax,'varchar(24)','Null'   創(chuàng)建兩個數(shù)據(jù)類型,即 telephone 和 fax
    (2)刪除用戶定義的數(shù)據(jù)類型

       當(dāng)用戶定義的數(shù)據(jù)類型不需要時,可刪除。刪除用戶定義的數(shù)據(jù)類型的命令是 sp_droptype {'type'}。
       例子:
       Use master
       Exec sp_droptype 'ssn'
       注意:當(dāng)表中的列還正在使用用戶定義的數(shù)據(jù)類型時,或者在其上面還綁定有默認(rèn)或者規(guī)則時,這種用戶定義的數(shù)據(jù)類型不能刪除。
    posted @ 2006-04-03 11:06 yanzhicun 閱讀(648) | 評論 (0)編輯 收藏
     

    12、類型不匹配(一下午的教訓(xùn))
    Microsoft VBScript 運行時錯誤 錯誤 '800a000d'
    類型不匹配

    /shop/Present.asp,行 24
    錯誤源代碼如下:
    Session("ProductPriceList") = Trim(Request.Form("DY_price"))
    Session("ProductNumList") = Trim(Request.Form("PNAmount"))
    ProductPriceList = Session("ProductPriceList")
    ProductNumList = Session("ProductNumList")
    ProductPriceList = Split(ProductPriceList,",")'-------------產(chǎn)品ID數(shù)組 注意這里,此變量已經(jīng)變成了數(shù)組類型,應(yīng)該使用PriceListArray
    NumListArray = Split(ProductNumList,",")'-------------產(chǎn)品數(shù)量數(shù)組
    ??? Response.Write("<br>")
    ??? Response.Write ProductPriceList(0)
    ??? If Len(ProductPriceList) = 0 OR Len(ProductNumList) = 0 Then
    原因:低級錯誤,變量混淆

    ?

    13、沒有打開數(shù)據(jù)庫連接
    ADODB.Recordset 錯誤 '800a0bb9'
    參數(shù)類型不正確,或不在可以接受的范圍之內(nèi),或與其他參數(shù)沖突。

    /shop/Present.asp,行 45
    就是沒有<!--#include file="../Conn.asp" -->

    14、函數(shù)內(nèi)彈出窗口
    '======================設(shè)置:修改付款方式(開始)========================

    Sub OperateModify(TypeId)
    ??????? If Trim(Request("DyTypeName"))="" Or Trim(Request("Discount"))="" Or Trim(Request("OrderID"))="" Or IsNull(Request("DyTypeName"))=True Then
    ??????? ???
    Response.write("<script language='javascript'>alert('不能為空');window.location='Shop_payment_manage.asp';</script>")
    ’使用這句就OK
    ??????? ???
    'Response.Redirect("Shop_payment_manage.asp")
    ’關(guān)鍵是有時候使用的是這句,所以有時候不彈出窗口
    ??????? ??? Response.End
    ??????? End If
    End Sub

    '======================設(shè)置:修改付款方式(結(jié)束)========================

    15、數(shù)據(jù)類型錯誤
    Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040e57'
    [Microsoft][ODBC SQL Server Driver][SQL Server]將 numeric 轉(zhuǎn)換為數(shù)據(jù)類型 numeric 時發(fā)生算術(shù)溢出錯誤。

    /shop/Order.asp,行 56

    16、 多步 OLE DB 操作產(chǎn)生錯誤
    Microsoft OLE DB Provider for SQL Server 錯誤 '80040e21'
    多步 OLE DB 操作產(chǎn)生錯誤。如果可能,請檢查每個 OLE DB 狀態(tài)值。沒有工作被完成。
    引起這個問題的原因簡單的說就是數(shù)據(jù)庫的字段類型不匹配或者字符個數(shù)超出了數(shù)據(jù)庫的字段的最大限制個數(shù)。
    ? 1>
    自動編號字段的就不應(yīng)該指定值;
    ? 2>
    限制 50 個字符的字段你就不應(yīng)該提交多于 50 個字符的字符串
    ? 3>
    記錄沒有向下移動。
    ???????????? OrderSql2 = "Select * From PE_OrderFormItem Where OrderFormID="&OrderFormID*1
    ????????????? Set OrderRs2 = Server.CreateObject("ADODB.RecordSet")
    ????????????? ?????? OrderRs2.Open OrderSql2,Conn,1,3
    ????????????? ?????? Do While Not OrderRs2.Eof
    ???????????????????? ?????? OrderRs2.Delete
    ????????????? ??????
    OrderRs2.MoveNext
    ????????????? ?????? Loop
    ?????? ?????? OrderRs2.Close
    ????????????? Set OrderRs2 = Nothing

    posted @ 2006-04-03 11:04 yanzhicun 閱讀(847) | 評論 (0)編輯 收藏
     
     

    http://www.eclipse-workbench.com/jsp/
    http://www.objectlearn.com/index.jsp
    http://www.crionics.com/products/opensource/eclipse/eclipse.jsp
    http://eclipse-plugins.2y.net/eclipse/index.jsp----------good
    ftp://202.113.29.2/pub/eclipse/plugins/  
    http://sourceforge.net/projects-------plugin project
    http://vssplugin.sourceforge.net/
    http://www.azzurri.jp/en/software/clay/index.jsp---------database modeling plugin
    http://www.improve-technologies.com/alpha/struts-config-editor/--------plugin
    http://www.sysdeo.com/eclipse/tomcatPlugin.html--tomcat的plugin和jboss的plugin 

    Lombo
     http://www.objectlearn.com/
    TomcatPlugin
     http://www.sysdeo.com/eclipse/tomcatPlugin.html

    EasyStruts
     http://easystruts.sourceforge.net

    EclipseColorer plugin 
     http://colorer.sf.net 

    CVS-SSH2 Plug-in for Eclipse 
     http://www.jcraft.com/eclipse-cvsssh2/
    JadClipse
     http://jadclipse.sourceforge.net/

    SWT Designer
     http://www.swt-designer.com/

    Hibernator
     http://hibernator.sourceforge.net/ 

    1.eclipseuml-installer_1.2.1.20030512.jar
    req emf_1.1.0_20030501_0612VL.zip & GEF-runtime-I20030327.zip
    UML工具,比較像rose, 有些bug,而且沒有放大縮小,拖來拖去眼都暈了,不過比slim好
    2.lomboz.21_02.zip
    J2ee plugin ,dw上推薦的說
      http://www-900.ibm.com/developerWorks/cn/java/l-jsp-eclipse/index.shtml?n-j-04241

    3.jadclipse_b206
    Jad Java decompiler plugin

    4.NLS-SDK-2.0.1-Translations.zip
    eclipse多國語言包,連doc都本地化了!

    5.v4all_2.1.0.17
    傳說中的Swing IDE,可視化編程

    6.EclipseColorer-take5.0.4.0
    據(jù)說可以語法加亮上百種語言,非常好,至少在XML中如此,棒極了

    7.xparrots_proxysettings_0.1.1
    這個最重要了 http proxy plugin

    8.checkstyle_eclipse_plugin_v2.1.0
    可以查出編碼不好的地方

    9.de.mvmsoft.slime_1_1_1_eclipse
    UML建模工具,逆向工程和drag功能做的很好,放大縮小也很好,不過圖形看上去不舒服。

    10.com.objfac.xmleditor_0.2.8
    受到推崇的XML編輯器

    11.jalopy-eclipse-0.2.6
    格式化工具,比eclipse自帶的強很多,但是不是太用,一般用把別人的代碼整理成自己的風(fēng)格,他會移動代碼位置。

    12.

    OO.還有些在線升級的
       http://www.improve-technologies.com/alpha/updates/site.xml
    有Axis, C#, XSLT, Resin, Editors等插件
       http://download.eclipse.org/technology/ajdt/update
    AspectJ
       http://www.x-parrots.com/eclipse/updates/
    iPAS, Http Proxy, Telent 

      http://eclipse-plugins.2y.net/eclipse/index.jsp 
     http://www.omondo.com/download.jsp
     http://www.eclipse-workbench.com/jsp/plugins.jsp

     http://www.genuitec.com/products_wsad.htm

     http://www.myeclipseide.com/ 

    JSP插件:
    Eclipse作為一個java應(yīng)用的IDE,使用非常方便,但是對于Jsp的開發(fā)支持還顯得不夠,在這里向大家推薦一個eclipse的plugins來協(xié)助JSP開發(fā)。這個名稱叫l(wèi)omboz,不但支持JSP語法高亮顯示,還有Code Assist功能,可以與Jbuilder媲美。下面簡要介紹一下eclipse2.1結(jié)合Tomcat開發(fā)Jsp的過程。
    下載: http://www.objectlearn.com/

    http://www.eclipseplugincentral.com/

    Visual Swing Designer for Eclipse
    http://v4all.sourceforge.net/index_start.html

    http://www.docsky.com/doclist.asp?category=J2EE&category1=開發(fā)工具&category2=eclipse

    posted @ 2006-01-19 09:56 yanzhicun 閱讀(891) | 評論 (0)編輯 收藏
     
    jsp是sun在servlet基礎(chǔ)上發(fā)展而來的一種新的web開發(fā)工具,在國外ejb+jsp/servlet+應(yīng)用服務(wù)器+數(shù)據(jù)庫已經(jīng)已經(jīng)成為電子商務(wù)站點的流行架構(gòu)。如果您選用jsp平臺作為internet商業(yè)站點的支持, 那么速度、價格和穩(wěn)定性都是要考慮到的,作為這些resin是十分出色的。resin在linux下的安裝已經(jīng)有不少文章介紹過,本文介紹它在windows操作系統(tǒng)下的安裝,相信看過本文,您將會很輕松架構(gòu)起一個擁有強大功能的web站點。

      首先的要求,是jdk已經(jīng)正常安裝。在這里我就不冗述jdk的安裝了,這方面的文章比較多。

      resin達(dá)到j(luò)sp解釋器的目的,有兩種方法, 一種是和iis集成,一種是作為standalone的httpd。具體使用那種方法,要看個人喜好和實際情況。我用的是第一種。

      首先先講解最簡單得standalone法。

      這種方法幾乎不需要配置,將resin解壓縮之后,直接運行bin\httpd.exe即可。 需要注意的是,運行httpd.exe之后會產(chǎn)生兩個窗口, 一個是類似命令行窗口(但是只能輸出,不能輸入),另外一個是gui的控制窗口,這兩個窗口絕對不可以用直接x的方法關(guān)閉,這樣會導(dǎo)致resin的系統(tǒng)錯誤,正確的方法是用gui上面的quit按鈕。

      等到命令行窗口里面出現(xiàn):

      resin 2.1.6 -- mon oct 2 17:34:31 pdt 2000
       listening to *:8080

      這樣就是啟動成功了,后面的8080就是resin httpd現(xiàn)在所監(jiān)聽的端口了。這個端口是可以修改的。 修改的時候,需要改動conf\resin.conf文件,修改如下

      section:xml:

       <!-- the http port -->
        <httpd-port>8080</httpd-port>

      把這里的8080修改成你想要得port即可。但是請注意不要和已經(jīng)占用的端口重復(fù),否則無法啟動。這個時候,resin httpd已經(jīng)在接受訪問了,具有iis的基本功能,http root目錄默認(rèn)是resin安裝目錄的doc目錄但是也是可以修改的,可以修改

      conf\resin.conf:xml:
       <http-server>
         <app-dir>doc</app-dir>
      這里是默認(rèn)的情形,你也可以寫上絕對路徑來定義其他的目錄。輸入 http://localhost:8080/ 看看!
    再說一下如何同iis集成。在這種模式下,resin作為iis的插件運行,只有碰到.jsp,.xtp等等文件的時候才進(jìn)行解析,就好像asp.dll負(fù)責(zé)解析.asp文件,perl.dll負(fù)責(zé)解析.pl文件一樣。這個配置比較復(fù)雜,而且可能會導(dǎo)致問題,但帶來非常大的方便。

      請三思而后行。

      下面我要說的是手工安裝的辦法,個人感覺它提供的setup.exe 安裝起來常常有問題,而且不可靠。

      1. 安裝好jdk,resin之后(這些都是廢話)

      2. 執(zhí)行bin\setup.exe文件

      填好關(guān)于resin home以及iis/pws目錄之后,點擊ok,他會停止iis/復(fù)制iis_run.dll/啟動iis這個時候,在你的iis的inetpub\s cripts目錄下面會有一個iis_run.dll文件。同時在iis配置的filter里面會多出來一個srun。

      3. 這個時候resin還不能使用,還需要安裝一個服務(wù)執(zhí)行bin\目錄下面的srun.exe -install命令。這個會給系統(tǒng)安裝一個resin服務(wù)。

      4. 配置resin.conf文件

      編輯如下section:

      <http-server>
       <app-dir>doc</app-dir>

      將doc修改為你的wwwroot所在的目錄,這個時候就好了!

      5. 重新啟動系統(tǒng)

      這一步是必需的,若不重新啟動,resin服務(wù)會無法正確運行。

      6. 瀏覽 http://localhost/caucho-status 看看!

      這樣的話,大致就告一段落了。以后,iis和resin會各司其職,iis負(fù)責(zé)html和asp文件的解析,resin負(fù)責(zé)jsp文件的解析。最后要說的是,resin的功能非常強大,虛擬目錄、虛擬主機、負(fù)載均衡都是可以實現(xiàn)的。
    posted @ 2006-01-19 09:48 yanzhicun 閱讀(192) | 評論 (0)編輯 收藏
     
    前言
    凡是有JSP編寫經(jīng)驗的人都有JSP調(diào)試?yán)щy的體會。由于自動化調(diào)試工具的缺乏使得在調(diào)試JSP時不得不在文件中大量的使用打印語句。這種做法對于定位JSP范圍內(nèi)的錯誤是一個簡單有效的手段,但如何快速有效的定位在JSP中調(diào)用的對象的內(nèi)部錯誤就顯得有點力不從心了。因為這樣將不得不頻繁地編譯、發(fā)布、啟停服務(wù)器,給調(diào)試帶來極大的不便。

    傳說中所見即所得的JSP調(diào)試工具,就筆者目前掌握的情況來看,并不存在。如果讀者有這方面信息的希望告知,呵呵。但是JSP的調(diào)試工具卻的確存在,而且它是免費的!It's lomboz。下載地址: http://www.objectlearn.com/products/download.jsp

    本文從一個簡單的例子出發(fā)來描述如何使用lomboz來調(diào)試JSP。本例的開發(fā)環(huán)境如下:

    -JDK版本:1.4.1;

    -JAVA IDE:Eclipse 2.1;

    -lomboz:適用于Eclipse2.1的插件;

    -JSP/Servlet容器:Tomcat 4.1.18。

    lomboz簡介
    嚴(yán)格的說lomboz是Eclipse的一個J2EE的插件,它將很多Java應(yīng)用服務(wù)器、J2EE組件和Web應(yīng)用開發(fā)集成到Eclipse中,可以幫助Java開發(fā)者使用Eclipse建立、測試、部署J2EE應(yīng)用。對于本文的重點,JSP的調(diào)試,它也有相關(guān)的支持:

    -支持JSP編寫,包括:語法著色和語法檢查;

    -支持JSP的調(diào)試。

    對于JSP的調(diào)試,lomboz的原理是對要調(diào)試的JSP頁面所產(chǎn)生的java代碼來進(jìn)行調(diào)試。整個調(diào)試過程與java應(yīng)用程序的調(diào)試過程一樣,這樣不論是JSP本身的調(diào)試還是被JSP調(diào)用的對象的調(diào)試本無縫地聯(lián)結(jié)到了一塊。

    在開始本文的例子之前,我們先來看看lomboz的安裝,以及為能正常的使用其JSP調(diào)試功能而進(jìn)行的配置。

    安裝和配置
    lomboz的安裝過程非常簡單,Eclipse的插件安裝過程大多都非常的簡單,主要步驟如下:

    1.從lomboz的下載地址( http://www.objectlearn.com/products/download.jsp )下載支持Eclipse2.1(或Eclipse的其他版本)的插件。

    2.如果Eclipse已運行,那么請先關(guān)閉它。

    3.把下載的文件解壓到Eclipse安裝目錄下的plugins目錄下。

    4.重新啟動Eclipse,打開“About Eclipse Platform Plug-ins”(Help -> About Eclipse Platform ->Plug-in Details),如果lomboz安裝成功將會出現(xiàn)有關(guān)它的信息。如下圖:

    點擊打開新窗口

    注:如果想卸掉lomboz,你只需要把plugins目錄下對應(yīng)lomboz的目錄刪除即可。

    5.設(shè)置Lomboz J2EE View,打開Window -> Customize Perspective,如圖設(shè)置

    點擊打開新窗口

    下來就是如何配置lomboz使之能正常的工作。與安裝過程相反,配置過程可不是那么簡單的,J。Lomboz的配置步驟如下:
    1.配置JDK,選擇“Windows -> Preferences”,選擇Lomboz,進(jìn)行JDK的配置。如圖例:

    點擊打開新窗口

    . 定義服務(wù)器,如果你的服務(wù)器已經(jīng)包含在Lomboz默認(rèn)的服務(wù)器列表中,這一步可以跳過。Lomboz默認(rèn)服務(wù)器列表可以通過在上一步的界面中展開Lomboz,然后選擇其中的“Server Definitions”獲得。以下以添加Tomcat4.1.18為例說明如何增加一個服務(wù)器。相關(guān)步驟如下:

    a)進(jìn)入Lomboz安裝目錄的servers子目錄,復(fù)制一個.server文件(如tomcat410.server),并將其改名為tomcat418.server。

    b)打開這個文件分別改動這個文件的以下位置:

    - <serverDefinition ……/>,將其中的name的值改為你想要的一個名字(如Apache Tomcat v4.1.8),這個名字用來顯示在“Server Definitions”界面的服務(wù)器列表部分;

    - <property id="serverRootDirectory" ….../>,其中default的值改為你機器上Tomcat所在的目錄,如D:/Program Files/Java/tomcat-4.1.18;

    - <property id="classPathVariableName" ……/>,其中default的值改為任意名字(如TOMCAT418),這個名字用于代表Lomboz工程的缺省的ClassPath的變量名;

    - <property id="classPath" ……/>,其中default的值改為你機器上Tomcat所在的目錄,如D:/Program Files/Java/tomcat-4.1.18;

    c) 添加jasper-runtime.jar。在默認(rèn)情況下TomcatX.server文件中只包含2個jar文件:servlet.jar和bootstrap.jar,但缺少jasper-runtime.jar。而這個jar文件在JSP的調(diào)試過程中起到了非常重要的作用,因此請加上它。給一個server添加jar有兩種做法:

    方法1:

    在剛才編輯的.server文件中的<serverClassPath>部分添加一行:<jar type="variable">${classPathVariableName}/common/lib/jasper-runtime.jar</jar>;

    方法2:使用“Server Definitions”界面,在此不再贅述。

    配置好的服務(wù)器會在“Server Definitions”窗體中顯示,如下圖:

    點擊打開新窗口

    注:對于Tomcat4.x的服務(wù)器需要打上補丁才能使Lomboz正常工作,補丁的下載地址:

    http://www.sysdeo.com/

    至此,Lomboz的安裝和配置已經(jīng)全部完畢,那么讓我們來創(chuàng)建一個“Hello World!”的例子來體會一下Lomboz調(diào)試JSP的過程吧。

    調(diào)試JSP
    創(chuàng)建工程
    要想使用Lomboz調(diào)試JSP,首先必須創(chuàng)建一個Lomboz工程。步驟如下:

    1.打開File->New->Lomboz J2EE Project,創(chuàng)建一個名為debugJsp的項目;

    2.選擇“Next”進(jìn)入Lomboz工程屬性選擇頁面,添加Web模塊和所使用的服務(wù)器。由于我們的主要任務(wù)是調(diào)試JSP,因此EJB模塊可以為空。如下圖:

    點擊打開新窗口

    3.選擇Finish,Lomboz工程即創(chuàng)建完畢。此時,Lomboz生成的文件結(jié)構(gòu)如下圖.

    點擊打開新窗口

    接下來,我們就可以創(chuàng)建自己所需要的JSP文件了。在本例中我直接使用默認(rèn)的index.jsp,將它的內(nèi)容改為:

    <!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->

    <html>
    <head>
    <title>Welcome</title>
    </head>
    <body>
    <center><%= "Hello World!"%></center>
    </body>
    </html>

    當(dāng)目前為止,我們調(diào)試JSP的準(zhǔn)備工作大致都完成了,但是對使用Tomcat4.x的人員還需要多余的步驟(這些步驟主要也是由tomcat4.x本身引起的):

    1.在Tomcat的config目錄下的server.xml文件中添加以下行(具體位置請參見server.xml相關(guān)的文獻(xiàn)):

    <Context path="/TestJsp" docBase="D:\DebugJsp\debugJsp" workDir="D:\DebugJsp\j2src\org\apache\jsp">

    其中,path表示W(wǎng)eb應(yīng)用的URL名字;docBase表示web應(yīng)用的物理位置;workDir表示jsp所對應(yīng)的java文件產(chǎn)生的位置,必須創(chuàng)建org\apache\jsp這樣的目錄結(jié)構(gòu)和名稱。

    2.根據(jù)org\apache\jsp在對應(yīng)的j2src目錄下創(chuàng)建相對應(yīng)的子目錄結(jié)構(gòu),同時把j2src設(shè)置為工程的source目錄。

    語法檢查
    現(xiàn)在,讓我們開始享受調(diào)試JSP的過程吧。在調(diào)試之前,JSP應(yīng)該是沒有語法錯誤的。Lomboz提供了JSP語法檢查的功能,具體操作是:

    1.選擇要進(jìn)行語法檢查的JSP文件,單擊鼠標(biāo)右鍵;

    2. 選擇Lomboz j2ee… -> Check Jsp Syntax

    調(diào)試
    解決完語法錯誤之后,接下來就是解決邏輯錯誤的時候了。對于這種錯誤就只能通過調(diào)試來解決了。使用Lomboz調(diào)試JSP的過程與普通JAVA應(yīng)用程序的調(diào)試非常類似,因為它的原理就是先利用服務(wù)器生成JSP對應(yīng)的JAVA文件,然后對他們進(jìn)行調(diào)試。

    調(diào)試JSP的步驟如下:

    1.打開Lomboz J2EE View,選擇服務(wù)器,單擊鼠標(biāo)右鍵選擇“debug server”。如圖:

    點擊打開新窗口

    如果.server文件定義正確,Tomcat將會啟動。如果沒有象預(yù)想的那樣啟動Tomcat,那么請從這兩個方面排錯:Tomcat環(huán)境變量和Lomboz的server文件。

    2.打開瀏覽器,如IE,在地址欄中輸入: http://127.0.0.1:8080/debugJsp/index.jsp 。如果JSP文件語法沒有錯誤,將會在工程的j2src\org\apache\jsp目錄下生成這個JSP文件對應(yīng)的JAVA文件。重新刷新工程,即可看到這些文件。如圖

    點擊打開新窗口

    這一步主要是觸發(fā)服務(wù)器根據(jù)jsp產(chǎn)生可供調(diào)試的java文件,不必太在意結(jié)果是否正確。因為一旦java文件生成,那么這些錯誤都可通過調(diào)試排除。

    3.打開這個java文件,在其中設(shè)置斷點,然后在IE的地址欄再次輸入這個URL,此時Eclipse的調(diào)試功能即被激活。至此就可有針對性地對JSP進(jìn)行調(diào)試了,這時的情形如圖:


    至于JSP所調(diào)用對象的調(diào)試,在完成上述步驟后,然后在對象對應(yīng)的java

    點擊打開新窗口

    文件中設(shè)置斷點即可。

    結(jié)束語
    雖然目前JSP的調(diào)試尚未方便到如同普通的java文件調(diào)試般方便,但是Lomboz這類工具的出現(xiàn)至少結(jié)束了手動調(diào)試JSP的階段。從此java的web應(yīng)用開發(fā)者不必因為一些錯誤而時不時地停下程序來手工添加打印語句來觀察變量的值,相反他們完全可以如調(diào)試普通JAVA應(yīng)用一樣在程序運行的同時來觀察這些值的變化。這大大地方便了基于WEB應(yīng)用的開發(fā),減少了以前為調(diào)試所浪費的時間。
    posted @ 2006-01-19 09:45 yanzhicun 閱讀(232) | 評論 (0)編輯 收藏
     
    Sysdeo Tomcat插件可以讓我們在Eclipse中對Tomcat的啟動與停止進(jìn)行控制,方便了我們的開發(fā)工作。本文中我們主要描述了如何在Eclipse中配置它,并通過一個簡單的例子來說明該插件的使用方法,因此在這里對Eclipse和Tomcat的使用方法沒做過多的描述,如果讀者有興趣的話可以查閱相關(guān)的資料。

    關(guān)鍵詞:Eclipse Sysdeo Tomcat Plugin


    軟件需求:

    軟件名稱
    下載地址
    安裝目錄

    Tomcat

    http://jakarta.apache.org

    C:\tomcat5

    Sysdeo Tomcat plug-in

    http://www.sysdeo.com/eclipse/Tomcatplugin

    -

    Eclipse


    http://www.eclipse.org

    C:\eclipse

    n 前言

    Sysdeo Tomcat插件可以讓我們在Eclipse中對Tomcat的啟動與停止進(jìn)行控制,方便了我們的開發(fā)工作,它有以下特點:

    1. 啟動、停止或者重新啟動Tomcat 4.x,5.0.x,3.3;

    2. 在Eclipse調(diào)試器中注冊Tomcat進(jìn)程;

    3. 創(chuàng)建一個WAR項目(向?qū)Э梢宰詣痈聅erver.xml文件);

    4. 把Java項目添加到Tomcat的類路徑中;

    5. 設(shè)置Tomcat JVM參數(shù),類路徑和啟動類路徑;

    6. 將Tomcat項目導(dǎo)出到WAR文件中;

    7. 選擇Tomcat配置文件;

    8. Capability to use a special Tomcat classloader to have classes in several java projects loaded at the same classloader level than classes in a Tomcat project


    n Sysdeo Tomcat插件的安裝與配置


    1. 將下載的插件釋放到臨時文件夾,這里我們得到一個新的文件夾com.sysdeo.eclipse.tomcat_3.1.0.beta,將這個文件夾剪貼到C:\eclipse\plugins目錄下。

    2. 啟動Eclipse,點擊Window→Customize Perspective,確認(rèn)新添加的插件被激活,如下圖:



    在工具欄中,你會發(fā)現(xiàn)多了3個Tomcat的圖標(biāo),它們分別代表啟動、停止和重新啟動Tomcat。

    3. 在進(jìn)行完上述步驟后,我們需要對安裝的插件進(jìn)行設(shè)置,讓它和我們安裝的Tomcat聯(lián)系起來。點擊Window→Perferences,選擇Tomcat節(jié)點,選擇我們使用的Tomcat版本和設(shè)置Tomcat的安裝目錄,請參考下圖:

    n 利用Sysdeo Tomcat插件進(jìn)行JSP開發(fā)

    在安裝配置好Sysdeo Tomcat插件后,我們將通過一個簡單的例子來說明該插件的使用方法。首先,點擊File→New→Project,在彈出的新建向?qū)е羞x擇Java→Tomcat Project,然后點擊Next,參考如下圖片:

    在接下來的項目設(shè)置對話框中,我們輸入項目的名稱test,然后直接點擊Finish按鈕完成項目的創(chuàng)建工作。


    接下來,我們新建一個JSP文件,并命名為hello.jsp。選中我們創(chuàng)建的test項目,右鍵單擊,在彈出的菜單中選擇New→File,然后在出現(xiàn)的對話框的文件名稱中輸入我們想要的文件名hello.jsp并點擊Finish按鈕完成創(chuàng)建工作,參考如下:
    對于JSP文件的內(nèi)容,讀者可以根據(jù)自己的喜好來進(jìn)行編寫,在這里我們僅給出一個簡單的例子供參考,源碼如下:

    例子 hello.jsp

    <HTML>

    <HEAD>
    <TITLE>A Web Page</TITLE>
    </HEAD>
    <BODY>
    <H1>Using JSP</H1>
    <% out.println("Using a Tomcat plug-in..."); %>
    </BODY>

    </HTML>

    保存文件后,點擊工具欄中啟動Tomcat的按鈕,你會發(fā)現(xiàn)Tomcat的啟動信息出現(xiàn)在Eclipse的終端中,根據(jù)這些信息檢查一下啟動是否成功。


    啟動成功后,打開一個IE窗口,在地址欄中輸入http://localhost:8080/test/hello.jsp,你會發(fā)現(xiàn)出現(xiàn)下面的問題:


    初次使用這個插件的朋友很多都會遇到這個問題,出現(xiàn)這個問題的原因是Eclipse啟動Tomcat時使用的是系統(tǒng)自帶的JRE,我們只需要修改它,讓它指向我們自己安裝的JDK就可以了,具體操作如下:
    點擊Window→Perferences,在左邊的菜單欄中選擇Java→Installed JREs,然后點擊右面窗口中的Add按鈕。

    在彈出的Add JRE窗口中,輸入JRE的名稱,這里我們根據(jù)安裝的JDK的版本命名為JDK1.4,點擊Browse按鈕選擇JDK的安裝目錄,然后點擊OK按鈕完成添加工作。

    添加完JRE后,點擊OK關(guān)閉Preferences窗口。再次點擊Window→Perferences打開Preferences窗口,在左邊的菜單中選擇Tomcat→JVM Settings,在右邊的窗口中將JRE選擇為我們剛剛添加的JDK1.4,然后點擊OK按鈕。

    重新打開一個IE瀏覽器輸入http://localhost:8080/test/hello.jsp,如果出現(xiàn)了下面的頁面,那么恭喜你,你成功了
    posted @ 2006-01-19 09:42 yanzhicun 閱讀(3520) | 評論 (1)編輯 收藏
     
    對于Eclipse的新版本(3.1)與Lomboz的配合在Tomcat環(huán)境下編寫動態(tài)網(wǎng)頁的教程在網(wǎng)上好像很少。(反正我是沒找到)。這里我把我今天的實踐過程中遇到的一些問題記錄下來,一來是為了備案,二來是為了讓大家少費些事,入門更容易一點。

    好了,不廢話了。

    我采用的軟件版本以及下載地址如下:

    Eclipse 3.1 相關(guān)網(wǎng)頁:http://www.eclipse.org/downloads/index.php

    Lomboz 3.1RC1 相關(guān)網(wǎng)頁:http://lomboz.objectweb.org/downloads/drops/S-3.1RC1-200507222345/

    Tomcat 5.5.9 相關(guān)網(wǎng)頁:http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi

    實踐過程的主要參照是文章WTP Tutorials - Building a School Schedule Web Application。這篇文章中的過程絕大部分還是好用的。我主要將對應(yīng)文章的結(jié)構(gòu),對在實踐中與文章中不一致的地方說一說。我的建議是主要參照上面的文章,如果能瞧得上在下,順便看看我寫的不同之處。文章的結(jié)構(gòu)如下:

    教程的預(yù)先要求

    在這里先說說一些軟件設(shè)置方面的問題吧.
    1.我使用的是JDK1.50_04,好像Tomcat5.5要求使用jdk1.5吧,起碼是支持,呵呵。另外,最開始我使用的是Tomcat4.1.31。這個版本的Tomcat好像和JDK1.5不相容。我在Eclipse里添加了好幾遍服務(wù)器都沒成功,換成Tomcat5.5.9后就好使了。(JDK我一直沒換,一直是1.5)
    2.我覺得在安裝Tomcat時,如果不是用來實際部署的話,就不要在安裝過程中選擇將Tomcat作為Windows服務(wù),那樣會給后來的調(diào)試帶來不便。

    在Eclipse中安裝Tomcat運行時環(huán)境
    1.在沒看這個文章之前,我一直沒有重視這個問題,尋思著Eclipse能跑起來應(yīng)該就沒什么問題了?,F(xiàn)在看來不是這樣。還是有必要制定JDK的,我想是因為里面有很多庫是JRE中沒有的緣故吧。
    2.Eclipse3.1+Lomboz3.1的界面和文章中的有點區(qū)別,不過在這一段的實踐過程中不涉及。

    創(chuàng)建一個J2EE工程
    1.此時界面的不同起到作用了。在實際界面中,針對此段第一步,應(yīng)該選擇Dynamic Web Projects,如下圖所示。


    創(chuàng)建班級和課程表容器

    這一段沒什么區(qū)別,唯一可選的區(qū)別是在實現(xiàn)Scheduler是列表可以使用ArrayList<SchoolClass>方式,畢竟是JDK1.5了么。呵呵。如果出現(xiàn)錯誤,八成是說參數(shù)化的集合不支持,只要更改源代碼級別就行了。更改的地方是Window->Preference->Java->Compiler,選擇右方Compiler compliance level為5.0

    還有一點就是別把班級和類搞混了,都對應(yīng)一個Class,不過我相信大家的E文水平都是很高的了。

    將班級加入課程表

    界面的差別又有顯現(xiàn)了。對于第一步,應(yīng)該是右擊WebContent,選擇new->JSP。是有點進(jìn)步了,呵呵。其余基本一致。

    提交Action

    這里的區(qū)別也主要是界面方面,不過這次好像與文件的管理聯(lián)系起來了。新版的Lomboz聲稱的一個Dynamic Web Project的典型結(jié)構(gòu)如下圖所示:

    此時應(yīng)該選擇右擊servlet->new->servlet的方式來生成新的Servlet,在生成過程中還捎帶著可以設(shè)定Servlet Mapping。省得后來再用代碼級文本方式的設(shè)置了。從上圖中可以看到,新版Lomboz在工程中沒有包含文章中提到的Deployment Descriptor選項

    另外在文章此段的第十步時設(shè)置的表單action屬性時的“/SchoolSchedule/”部分,應(yīng)該用你生成的項目名稱替換(前提是在生成項目時,你是按照系統(tǒng)默認(rèn)的選項來的)。

    顯示時間表

    這段沒有太多可說的,應(yīng)該注意的一點就是在將兩個jar文件放到WEB-INF/lib目錄中后,Eclipse開始回在目錄條目前顯示一個十字標(biāo)記,但是點擊后,除了標(biāo)記消失以外沒有任何效果。顯示不出任何目錄中的文件。這可能是Eclipse3.1的一個bug吧。不過使用還是正常的。

    運行并檢驗課程表Web應(yīng)用程序

    總結(jié)

    這兩段沒有什么可說的

    好了,祝你好運。
    posted @ 2006-01-19 09:31 yanzhicun 閱讀(530) | 評論 (1)編輯 收藏
    CALENDER
    <2006年1月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜


    Powered By: 博客園
    模板提供滬江博客

    主站蜘蛛池模板: 亚洲一区二区电影| 黄色片网站在线免费观看| avtt亚洲天堂| 91网站免费观看| 女人裸身j部免费视频无遮挡| 亚洲国产高清美女在线观看| 黑人大战亚洲人精品一区| 日本特黄特色aa大片免费| ww4545四虎永久免费地址| 性xxxxx大片免费视频| free哆拍拍免费永久视频| 免费在线观看亚洲| 亚洲国产精品成人午夜在线观看 | 亚洲电影在线免费观看| 亚洲国产精品一区二区第一页 | 日韩在线天堂免费观看| 精品国产亚洲男女在线线电影 | 亚洲人成图片小说网站| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲制服丝袜一区二区三区| 久久亚洲AV成人无码国产| 亚洲人xxx日本人18| 亚洲欧洲国产经精品香蕉网| 亚洲精品动漫免费二区| 久久成人永久免费播放| 国产视频精品免费视频| 亚洲无砖砖区免费| 午夜福利不卡片在线播放免费| 18禁美女裸体免费网站| 日本19禁啪啪无遮挡免费动图| 亚洲中文字幕无码日韩| 亚洲香蕉在线观看| 久久久WWW成人免费精品| 成人黄色免费网址| 国产91精品一区二区麻豆亚洲 | 亚洲人成图片小说网站| 狠狠色伊人亚洲综合网站色| 亚洲粉嫩美白在线| 爽爽爽爽爽爽爽成人免费观看| 精品一区二区三区免费观看 | 亚洲日本一区二区一本一道 |