Q:為什麼我的記錄集的RecordCount值總是回傳-1?
答:你應該使用這種模式來開啟訪問資料庫的記錄集:
rec.openstrSQL,conn,1,1
其中的strSQL是操作資料庫的SQL語句;conn是聯結資料庫的Connection變數。
Q:我在ASP腳本中寫了很多的註釋,這會不會影響伺服器處理ASP檔案的速度?
答:經過國外技術人員測試,有過多註解的ASP檔案整體效能只會下降0.1%,也就是說基本上不會影響到伺服器的效能下降的。
Q:我需不需要在每個ASP檔案的開頭使用?
答:如果你使用的腳本語言就是VBScript的話,請盡量不要使用這個語句,否則程式整體效能將會下降將近1.2%,但是如果你使用的並不是VBScript語言的話,請使用這個語句。
Q:我有沒有必要在每個ASP檔案中使用OptionExplicit?
答:你最好這樣,因為這樣可以讓你的程式出錯機會降到最少,並且會提升整體效能將近9.8%
Q:最近隨同IIS5.0一起出現的ASP3.0有何新的功能?
答:其實沒有什麼新的變化,但新增加了兩個Server物件的方法:
Server.Transfer以及Server.Excute,還有一個新的物件ASPError。具體的使用方法請參考微軟的網站www.microsoft.com
Q:為什麼我使用Response.Redirect的時候會出現錯誤?
答:最常見的原因就是你在寫入頁面之後對HTTP標題進行了修改,解決的方法是在頁面的開始寫上
Q:好像Redirect方法只可以重新定向到同一幀裡面,可不可以定向到其他幀呢?
答:可以,要加上這個:。然後,當你再使用
Redirect方法的時候,就會重新定向到名字叫做FrameName的畫面裡面了。
Q:為什麼我使用Window.open()方法開啟的新視窗的ASP頁面中常會出現Session遺失的現象?
答:在微軟的IE4.x會經常出現這種情況,但IE5.x中已經解決了這個錯誤。所以,為了相容於所有的瀏覽器,你可以使用諸如test.asp?name=xxx的方式來在視窗之間傳遞參數,這樣的效果更好,只是要注意,如果傳遞的參數很重要,請不要使用明文方式進行傳遞,否則容易導致安全問題。
Q:經常看到聯結資料庫有兩種方式DSN以及DSN-LESS,兩者是什麼意思?有什麼不同嗎?
答:DSN是英文DataSourceName的縮寫,DSN方式也就是採用資料來源的連結方式,這個資料來源可以在控制台裡面的ODBCDataSources中進行設置,然後就這樣使用:
Conn.OpenDSN=Test;UID=Admin;PWD=;
其中的Test就是你自己設定的資料來源的名稱。注意,要同時使用UID以及PWD,否則會出錯。
同樣的,DSN-LESS就是非資料來源方式的聯結方法,使用方法是:
Conn.OpenDriver={MicrosoftAccessDriver
(*.mdb)};Dbq=/somepath/mydb.mdb;Uid=Admin;Pwd=;
在相同的硬體環境下,DSN-LESS方式要比DSN方式的效能要高,但是一旦ASP原始碼因為某些安全問題而被別人的到,將會洩漏資料庫的帳號以及密碼,所以這兩種方式是個有利弊的。
Q:在ASP使用ADO的AddNew方法和直接使用Insertinto...語句有和不同?那種方式比較好?
答:ADO的AddNew方法只是將Insertinto語句封裝了起來,所以,當對大量資料進行操作的時候,直接使用SQL語句將會大大加快存取資料的速度,因為他減少了ADO的翻譯時間。雖然SQL語句不如AddNew等語句容易接受,但學習一些常用的SQL語句在進行資料庫程式設計上是非常重要的。
Q:為何我將這句話(Let'sgonow!)插入資料庫的時候會發生錯誤?
答:因為大多數的資料庫(Access,MSSQLServer)都把單引號當作分割符號使用的,所以不可以直接將單引號插入到資料庫中,你必須在執行SQL語句之前,分別將每個單引號替換成兩個單引號:
MyData=Replace(MyData,','',1)然後,在儲存到資料庫就行了
1.問題:ASP是一種程式語言嗎?
答:ASP不是程式語言,而是一種開發環境。 ASP提供了一個在伺服器端執行指令的環境,它利用了特殊的符號()來區分HTML與必須經過伺服器翻譯才能送到客戶端的指令。它可以執行的指令包括HTML語言,MicrosoftVBScript和MicrosoftJscript等,因此可以製作出功能強大的網路應用程式。
2.問題:在Web伺服器上容納多個Web站點,能使用PWS嗎?
答:在PWS上只能容納一個Web站點。為了在相同的電腦上容納多個Web站點,需要使用WindowsNTServer或Windows2000Server/Professional和IIS。
3.問題:如何使用6個內建ASP物件?
答:ASP提供了多個內嵌對象,無須建立就可以在指令中直接存取和使用它們,這六個對象主要有:請求(Request)對象、回應(Response)對象、工作階段(Session)對象、應用程式(Application)對象、伺服器(Server)對象、Cookies對象,這六個對像中的伺服器(Server)對象可載入其他元件,這可以擴充ASP的功能。
使用Server.CreateObject所建立的對象,它的生命週期在它建立時開始,在它所在的網頁程式結束時結束。如果想要讓該物件跨網頁使用,則可以用Session物件來記錄Server.CreateObject所建立的物件。
4.問題:為什麼在使用Response.Redirect的時候出現以下錯誤:標題錯誤,已將HTTP標題寫入用戶端瀏覽器,對任何HTTP的標題所做的修改必須在寫入頁內容之前?
答:Response.Redirect可以將網頁轉移至另外的網頁上,使用的語法結構是這樣的:Response.Redirect網址,其中網址可以是相對地址或絕對地址,但在IIS4.0使用與在IIS5.0使用有所不同。
在IIS4.0轉移網頁須在任何資料都未輸出至客戶端瀏覽器之前進行,否則會發生錯誤。這裡所謂的資料包括HTML的捲標,例如:,等,而在IIS5.0中已有所改進,在IIS5.0的預設情況下緩衝區是開啟的,這樣的錯誤不再產生。
在Response物件中有一Buffer屬性,該屬性可以設定網站在處理ASP之後是否馬上將資料傳送到客戶端,但設定該屬性也必須在傳送任何資料給客戶端之前。
為保險起見,無論採用何種ASP運行平台,在頁面的開始寫上,將緩衝區設定為開啟,這樣的錯誤就不會發生了。
5.問題:緩衝輸出對於網頁傳輸有沒有影響?
答:在比較大的Web頁中,第一部分在瀏覽器中出現可能會有一些延遲,但是載入整個Web頁的速度比不用緩衝快。
6.問題:在沒有表單提交時查詢字串的值是否可以使用Request.QueryString集合?
答:Request物件用於讀取瀏覽器的數據,它除了可以讀取表單欄位的內容,還可以用來讀取附帶在網址後面的參數,無論請求字串怎樣添加到連結位址中對Request來說都沒有什麼不同。使用get方法提交表單,還是跟隨一個附加查詢字串的連結查詢字串中所有的值,都可以使用Request.QueryString集合。
7.問題:我在ASP腳本中寫了很多的註釋,這會不會影響伺服器處理ASP檔案的速度?
答:在寫程式的過程中,作註釋是良好的習慣。經國外技術人員測試,有過多註解的ASP檔案整體效能只會下降0.1%,也就是說在實際應用上基本上不會感覺到伺服器的效能下降的。
8.問題:需不需要在每個ASP檔案的開頭使用?
答:在每個ASP檔案的開頭使用程式碼是用來通知伺服器現在使用VBScript來編寫程序,但因為ASP的預設程式語言是VBScript,因此忽略這樣程式碼也可以正常運行,但如果程式的腳本語言是JavaScrip,就需要在程式第一行指明所使用的腳本語言。
9.問題:我有沒有必要在每個ASP檔案中使用OptionExplicit? 答:在實際應用中,VBScript變量的概念已經模糊了,允許直接使用變量,而不用Dim聲明變量,但這並不是一個好習慣,容易造成程序錯誤,因為可能重複定義一個變量。我們可以在程式中使用OptionExplicit語句,這樣在使用一個變數的時候,必須先宣告它,如果使用了沒有經過宣告的變量,執行時,程式就會出錯。
實務證明,ASP檔案中使用OptionExplicit可以使得程式出錯機會降到最少,並且會大幅提升整體效能。
10.問題:執行ASP檔案時有什麼安全措施?
答:ASP提供了很好的程式碼保護機制,所有的ASP程式碼都在伺服器端執行而只回傳給客戶端程式碼執行結果。但仍不排除惡意人士對Web伺服器的刻意破壞,所以在撰寫ASP檔案時更要注意安全問題。
雖然在ASP中引入檔案以inc作為副檔名,在這裡仍建議以ASP作為引檔的副檔名。當這些程式碼在安全機制不好的WebServer上運行時,只需在地址列上輸入引入文件的地址(inc為擴展名),就可以瀏覽該引入文件的內容,這是由於在WebServer上,如果沒有定義好解析某類型(如inc)的動態連線庫時,該檔案以原始碼方式顯示。
另外,不要把資料庫檔案放在網站結構內部,這樣,當惡意人士取得資料庫路徑後,就可以輕易取得該資料庫,進而肆意更改資料庫內容。比較好的做法是,為資料庫建立資料來源名稱DSN(DateSourceName),在DSN中儲存了有關連接到指定資料提供者的信息,包括:資料庫的物理位置,用於存取資料庫的驅動程式的類型,訪問資料庫的驅動程式所需的任何其他參數,在進行資料庫存取時可以直接存取該DSN。
11.問題:評介Web資料庫管理系統時,應考慮哪些問題?
答:在評估一個Web資料庫管理系統時,必須考慮到三個方面的問題:多用戶問題;所建立的Web資料庫應該是關係型的;資料庫的安全性問題。 12.問題:ADO是什麼,它是如何操作資料庫的?
12.問題:ADO是什麼,它是如何操作資料庫的?
答:ADO的全名是ActiveXDataObject(ActiveX資料物件),是一組最佳化的存取資料庫的專用物件集,它為ASP提供了完整的網站資料庫解決方案,它作用在伺服器端,提供含有資料庫資訊的主頁內容,透過執行SQL指令,讓使用者在瀏覽器畫面中輸入,更新並刪除網站資料庫的資訊。
ADO主要包括Connection,Recordset和Command三個物件,它們的主要功能如下:
·Connection對象:負責開啟或連接資料庫文件;
·Recordset物件:存取資料庫的內容;
·Command物件:對資料庫下達行動查詢指令,以及執行SQLServer的預存程序。
13.問題:使用Recordset物件和Command物件來存取資料庫的區別在哪裡?
答:Recordset物件會要求資料庫傳送所有的數據,那麼資料量很大的時候就會造成網路的阻塞和資料庫伺服器的負荷過重,因此整體的執行效率會降低。
利用Command物件直接呼叫SQL語句,所執行的操作是在資料庫伺服器中進行的,顯然會有很高的執行效率。特別是在伺服器端執行創建完成的預存過程,可以降低網路流量,另外,由於事先進行了語法分析,可以提高整體的執行效率。
14.問題:是否必須為每一個Recordset物件建立一個Connection物件?
答:可以同時對不同的Recordset物件使用相同的Connection對象,以節省資源。
15.問題:什麼是資料庫管理系統(DBMS)?
答:資料庫為了確保儲存在其中的資料的安全性和一致,必須有一組軟體來完成對應的管理任務,這組軟體就是資料庫管理系統,簡稱DBMS,DBMS隨系統的不同而不同,但一般來說,它應該包括以下幾個方面的內容:
資料庫描述功能:定義資料庫的全域邏輯結構,局部邏輯結構和其他各種資料庫物件;
資料庫管理功能:包括系統配置與管理,資料存取與更新管理,資料完整性管理與資料安全性管理;
資料庫的查詢和操縱功能:此功能包括資料庫檢索和修改;
資料庫維護功能:包括資料引入引出管理,資料庫結構維護,資料恢復功能和效能監測。
為了提高資料庫系統的開發效率,現代資料庫系統除了DBMS之外,還提供了各種支援應用開發的工具。
16.問題:目前流行的WEB資料庫管理系統有哪些?
答:目前流行的Web資料庫管理系統有微軟的SQLServer、Oracle、DB2、Sybase,小規模的企業多使用Access。
17.問題:在ASP使用ADO的AddNew方法和直接使用Insertinto...語句有何不同?哪種方式比較好?
答:ADO的AddNew方法只是將Insertinto語句封裝了起來,所以,當對大量資料進行操作的時候,直接使用SQL語句將會大大加快存取資料的速度,因為它減少了ADO的翻譯時間,由於SQL語句所執行的操作是直接在資料庫伺服器中進行的,尤其在資料量很大的時候有顯著的優勢。
18.問題:為什麼我在ASP使用標準的插入記錄語句insertintobooks(name,email)values(kitty,[email protected])會出錯?
答:SQL(StructuredQueryLanguage/結構式查詢語言)是IBM公司在1970年代所發展出來的資料查詢語言,它現在已經成為關係型資料庫查詢語言的標準。 SQL語句是一種以英文為基礎的程式語言,可以使用它來添加,管理以及訪問資料庫。
在SQL語句中加入時的字串雖然可以使用雙引號,但在ASP中卻需要使用單引號才能正常執行。所以應寫成insertintobooks(name,email)values('kitty','[email protected]')。
19.問題:什麼是ActiveX控制項?在哪裡可以得到這些ActiveX控制項?
答:MicrosoftActiveX控制項是由軟體供應商開發的可重複使用的軟體元件。除了ASP的內嵌物件外,另外安裝進來的ActiveX控制項也可以在ASP中使用,這樣可以節省許多寶貴的開發時間,在ASP中其實也內嵌了許多的ActiveX控制項可以使用。
使用ActiveX控件,可以很快地在Web應用程式、以及開發工具中加入特殊的功能。例如,使用AdRotator物件來製作廣告滾動板,使用FileSystemObject物件進行檔案訪問,使用Marquee物件實現滾動文字。
現在,已有1000多個商用的ActiveX控件,開發ActiveX控件可以使用各種程式語言,如C,C++等,以及微軟公司的VisualJava開發環境MicrosoftVisualJ++。 ActiveX控制項一旦被開發出來,設計和開發人員就可以把它當作預先組裝元件,用來開發客戶程式。以此種方式使用ActiveX控件,使用者無需知道這些元件是如何開發的,在許多情況下,甚至不需要自己編程,就可以完成網頁或應用程式的設計。
目前由第三方軟體開發人員提供的商用控制有1000多種。微軟ActiveX元件庫(ActiveXComponentGallery)中存著資訊以及相關的連接,它們指向微軟及第三方開發人員提供的各種ActiveX控制項。在微軟ActiveX元件庫(ActiveXComponentGallery)中,可以找到開發Internet增強型ActiveX控制項的公司清單。
20.問題:為什麼使用strStartPort=(Request.Form(catmenu_0)語句取到表單中起始站點的值在資料庫卻找不到?
答:這是因為取到的起始站點的數值可能有空格,例如原意是杭州,但由於空格存在,ASP程式取到的數值可能就是杭州,而資料庫中只有杭州的紀錄,當然就找不到了,解決的方法是利用Trim函數將字串兩頭空格全部去除,對應的語句為:
strStartPort=TRIM(Request.Form(catmenu_0))
21.問題:在ASP當變數的生命週期結束後,有幾種保留變數內容的方法?
答:任何導致網頁結束的操作,例如按下瀏覽器的刷新按鈕,或關閉了瀏覽器,再重新開啟它,都會導致變數生命週期的結束。
如果希望在網頁結束執行時,也能夠保留變數的內容,以備下一次執行時使用,就可以藉助Application物件來實現。例如可以利用Application物件來製作統計網站訪問量的計數器。
Session對象跟Application對像一樣,可以在網頁結束時將變數的內容儲存下來,但是與Application對像不同的是,每個聯機是一個獨立的Session對象,簡單地說就是所有聯機上網者只會共享一個Application對象,但每位連線上網者將擁有自己的Session對象。
Application物件與Session物件可以幫我們把資訊記錄在伺服器端,而Cookies物件則會藉助瀏覽器提供的Cookies功能將資訊記錄在客戶端。有一點要注意,Cookies是記錄在瀏覽器的信息,所以對資料的存取並不像訪問其他ASP物件(資訊儲存在Server端)那麼簡單,就實際運行來看,只有在瀏覽器開始瀏覽Server的某一網頁,而Server尚未下載任何資料給瀏覽器之前,瀏覽器才能夠與Server進行Cookies資料的交換。
22.問題:對象使用完後該怎麼辦?
答:當使用完物件後,首先使用Close方法來釋放物件所佔用的系統資源;然後設定物件值為nothing來釋放物件佔用的內存,否則會因為物件太多導致WEB服務網站運作效率降低乃至崩潰,相應語句如下:
23.問題:在ASP檔案中讀取HTML的表單欄位有幾種方法?
答:Request物件除了可以用來讀取附帶在網址後面的參數以外,也可以讀取HTML表單欄位的內容,常用的語法結構如下:
其中的method可以接受Get或Post兩種傳輸的方法,其中的Post是允許傳輸大量資料的方法,而Get方法會將所要傳輸的資料附在網址後面,然後一起送達伺服器,因此傳送的資料量就會受到限制,但是執行效率卻比Post方法好。
使用Get或Post方法都可以將資料送到伺服器,使用Request物件接收資料的相對應方法如下:
Get:Request.QueryString(欄位名稱),也可以寫成Request(欄位名稱)
Post:Request.Form(欄位名稱),也可以寫成Request(欄位名稱)
24.問題:如何提高使用Request集合的效率?
答:在使用Request集合時,由於包含了一系列對相關集合的搜索,這比訪問一個局部變數要慢得多。因此,如果打算在頁面中多次使用Request集合中的一個值,則應考慮將其存貯為一個局部變數。
25.問題:在ASP頁面中既可以使用VBScript,也可以使用Jscript,混合使用腳本引擎好嗎?
答:雖然在ASP頁面中可以使用VBScript,也可以使用JScript。但在同一個頁面上同時使用JScript和VBScript則是不可取的。因為伺服器必須實例化並嘗試快取兩個(而不是一個)腳本引擎,這在一定程度上增加了系統負擔。因此,從效能上考慮,不應在同一頁面中混用多種腳本引擎。
26.問題:當我們建立了一個ASP文件,並且符合語法時,透過瀏覽器輸入以下地址,或透過資源管理器開啟瀏覽:c:/inetpub/wwwroot/a.asp,將出現無法執行的錯誤,並提示權限不對或文件無法訪問,為何不能正常運行ASP文件?
答:這是因為ASP檔案首先要求網站是具備執行(腳本)屬性的;然後要求按照URL格式輸入位址,而不是DOS格式,我們需要在電腦上安裝好並啟動Web服務平台,並確保ASP檔案存放在Web伺服器的虛擬目錄下,就可以透過HTTP的格式來瀏覽,在瀏覽器的網址列輸入:http:// Web網站名稱(或網站的IP位址)/ASP檔名,回車後就可以在瀏覽器中看到伺服器執行ASP檔案的結果。
27、問題:什麼是ASP.NET?它與ASP有什麼關係?
答:ActiveServerPages(ASP,活動伺服器頁面)就是一個比較簡單程式設計環境,在其中,可以混合使用HTML、腳本語言以及少量元件來建立伺服器端的Internet應用程式;
ASP.NET是微軟力推的功能強大的程式設計環境,可使用C#等多種高階語言及腳本語言、HTML、XML、XSL等來建立基於網路的應用程式。 ASP.NET將C#作為一種物件導向語言,在許多方面來看,C#將成為微軟的與Java相似的語言。 C#是ASP.NET開發中一個最重要的功能,微軟將會將C#發展成Java的強勁對手。這也是微軟.Net框架的一個重要組成部分。我認為C#是微軟在程式語言領域擊敗對手的主要工具。
ASP.NET在物件導向性、資料庫連接、大型網站應用程式等方面都優於ASP程序,ASP.NET也提供更多的其他方面的新特性,例如:內建的物件快取和頁面結果快取;內建的XML支持,可用於XML資料集的簡單處理;伺服器控制提供了更充分的互動式製等。
ASP.NET依然完全鎖定在微軟的作業系統中,要真正發揮ASP.NET潛力,你要使用C#或vb.net。這兩種語言將成為ASP.NET標準的核心的腳本語言。