【工控老马】ASP问与答40篇
問:什么是ASP?
答:ASP是Active Server Page的縮寫,意為“活動服務器網頁”。ASP是微軟公司開發的代替CGI腳本程序的一種應用,它可以與數據庫和其它程序進行交互,是一種簡單、方便的編程工具。ASP的網頁文件的格式是.asp,現在常用于各種動態網站中。 ASP是一種服務器端腳本編寫環境,可以用來創建和運行動態網頁或Web應用程序。ASP網頁可以包含HTML標記、普通文本、腳本命令以及COM組件等。利用ASP可以向網頁中添加交互式內容(如在線表單),也可以創建使用HTML網頁作為用戶界面的web應用程序。 與HTML相比,ASP網頁具有以下特點:
(1)利用ASP可以實現突破靜態網頁的一些功能限制,實現動態網頁技術;
(2)ASP文件是包含在HTML代碼所組成的文件中的,易于修改和測試;
(3)服務器上的ASP解釋程序會在服務器端制定ASP程序,并將結果以HTML格式傳送到客戶端瀏覽器上,因此使用各種瀏覽器都可以正常瀏覽ASP所產生的網頁;
(4)ASP提供了一些內置對象,使用這些對象可以使服務器端腳本功能更強。例如可以從web瀏覽器中獲取用戶通過HTML表單提交的信息,并在腳本中對這些信息進行處理,然后向web瀏覽器發送信息;
(5)ASP可以使用服務器端ActiveX組件來執行各種各樣的任務,例如存取數據庫、發現哦那個Email或訪問文件系統等;
(6)由于服務器是將ASP程序執行的結果以HTML格式傳回客戶端瀏覽器,因此使用者不會看到ASP所編寫的原始程序代碼,可防止ASP程序代碼被竊取。
問:什么是靜態網頁和動態網頁?
答:網頁按其表現形式有靜態網頁與動態網頁之分。
靜態網頁:
所謂靜態網頁,就是該網頁文件里沒有程序代碼,只有HTML標記(網頁中的圖片、表格、文字等頁面內容是通過HTML代碼來描述,打開一個網頁,在頁面點擊鼠標右鍵,在快捷菜單中選擇[查看源文件],即可查閱此網頁的HTML代碼),這種網頁文件的后綴為.htm或.html。靜態網頁一經制成,內容就不會再變化,不管何時何人訪問,顯示的都是一樣的內容,如果要修改有關內容,就必須修改網頁,然后重新上傳到服務器上。
靜態網頁的工作原理如下:
當你在瀏覽器里輸入網址回車后,就向服務器端提出了瀏覽網頁的請求。服務器端接到請求后,就會找到你要瀏覽的靜態網頁文件,服務器識別出是靜態網頁(查看后綴是.htm或.html),然后直接發送到你的瀏覽器上顯示出來。
注意:
1.靜態網頁內容由HTML代碼來描述,客戶端瀏覽器負責解析HTML代碼,顯示頁面內容。
2.靜態網頁響應速度快。
3.靜態網頁適合放置長久不變的信息,比如公司介紹。
動態網頁:
所謂動態網頁,就是該網頁文件不僅含有HTML標記,而且含有程序代碼,這種網頁的后綴一般根據Web程序設計技術來定,如利用ASP技術培訓開發的動態網頁文件的后綴為.asp,jsp技術為.jsp,php技術為.php,.net技術為.aspx。動態網頁能夠根據不同的情況而動態顯示相應的內容,還可以根據用戶的即時操作和即時請求,內容發生相應的變化。如新聞發布系統、BBS、留言板、聊天室等就是用動態網頁來實現的。
動態網頁的工作原理與靜態網頁有很大的不同。當你在瀏覽器里輸入動態網頁網址回車后,向服務器端提出了瀏覽動態網頁的請求,服務器端接到請求后,首先會找到你要瀏覽的動態網頁文件,然后就執行網頁文件中的程序代碼,將程序代碼所代表的動態內容轉化為靜態的標準HTML內容,最后全部以靜態網頁HTML形式發送到你的瀏覽器。
問:什么是靜態網站和動態網站?
答:靜態網站即網站內所有頁面均為靜態頁面;動態網站即網站內存在動態網頁,可以實現某些動態交互式功能。通常,一個動態網站,會把信息不經常變換的內容做成靜態頁面形式,而需要經常變換內容的頁面做成動態網頁形式。
問:為什么網站要做成動態網站?
答:互聯網發展十多年來,最早的網站為靜態網站,如果要更新網站內容,必須請網站制作者更新網頁后,再上傳至服務器將原網頁覆蓋后才能實現,顯然這很不方便網站內容的及時更新。試想,一家貿易公司請一家網站設計工作室制作公司網站,如果是靜態網站,發條公司動態或公司通告,還需要通知網站的制作者更新網頁,再上傳至服務器,這很麻煩。如果是動態網站,公司自己就可以隨時通過瀏覽器進入管理系統發布或更新信息。
問:什么是Web程序設計技術?
答:就是用于實現動態交互式功能的網頁制作技術,即動態網頁制作技術,通過Web程序語言設計的動態網頁可以根據用戶的即時操作和即時請求,網頁內容發生相應的變化,從而可以實現功能強大的交互式操作。常用的Web程序設計技術有CGI、PHP、ASP、JSP、ASP.Net等。
問:為什么ASP技術很流行?
答:ASP是目前最熱門的Web技術。
1.易學。ASP功能強大又簡單易學,VBScript是它默認的腳本語言,而VBScript由源于VB,很多人熟悉VB,有一定有語言基礎。ASP程序相對容易開發和維護。
2.微軟產品,微軟強大的技術支持,并且與常用的Windows網絡操作系統和IE瀏覽器兼容性好。
3.資源豐富。技術發展相對成熟,并且有豐富的ASP資源。
4.軟硬件環境要求低。ASP運行環境低,連早期的WIN98都支持ASP;對服務器硬件配置要求低,個人PC設置為WEB服務器也能跑動ASP系統。
5.適合中小型動態網站建站。
問: ASP技術使用前景如何,會不會很快被淘汰?
答:任何一項技術均有一定的生命期。微軟的本意是,推出ASP.net以取代ASP,但從目前來看,ASP還是開發中小型動態網站最適合的技術。理由有:
1.開發門檻低,易掌握。學習ASP.net要有一定的基礎,需要經過系統的軟件開發課程學習,需要系統的程序開發知識,只適合有一定軟件開發基礎的人學習掌握。除了大型網站,一般中小型網站的制作者通常是一個人,他需要掌握網站和網頁框架構建、FLASH制作、圖片處理,如果還要掌握利用.NET開發后臺,勢必對制作者來說,難度較大,但他可以選擇學習容易掌握的ASP技術來開發后臺。
2.對于中小型網站的交互功能來說,用ASP技術就容易實現,沒有必要使用.NET技術。通常.NET技術用于通過團隊力量來開發大型交互式系統,比如網上電子商務系統、電子政務系統,我們學院引進的正方教務管理系統,其B/S部分就是用.NET技術開發的。
問:有很多ASP資源可利用,似乎沒有必要去學習ASP?
答:網站建設者可以通過很多途徑獲得現成的ASP系統,可以奉行“拿來主義”,這樣似乎沒有必要去學習ASP?但實際情況并不是這樣。
的確,ASP之所以這么紅火,其中一個很重要原因是資源豐富。掌握ASP技術的人很多,他們會把自主開發的系統放在網上供人下載,也有一些軟件公司也提供ASP資源。但,如何你要開發ASP技術動態網站,必須掌握ASP,原因有:
1.如果你對ASP不了解,尋找到現成的ASP系統,你也不知道如何嵌入到你的網站中。
2.單純性質的留言板、BBS不需修改,可以直接放在你的網站中使用,但是其它系統,很難完全適合你網站的需求,你需要利用你掌握的ASP技術進行修改完善,以期符合你網站的實際情況和實際需求。
3.一些針對性或個性化的系統,無法獲得,需要你量體裁衣,自主開發。例如學院網站上就業調查系統、食堂工作調查系統相對項目多,比較復雜,需要自己編寫。
問:什么是腳本?
答:腳本(Script)是網頁制作中常見的制作技術。根據腳本語言所編寫的代碼可以直接插入到HTML中,利用腳本可以操縱網頁上的元素去實現網頁的交互功能,還可以制作特殊動態效果的網頁,例如,注冊時用戶輸入信息的有效性驗證、彈出的信息框、鼠標指針的文字跟隨、漸隱漸現的圖片等都是腳本的實際運用。
常用的腳本語言有JavaScript和VBScript,VBScript是ASP的語言基礎。
注意:
1.JavaScript和VBScript腳本語言基本相同。
2.JavaScript腳本一般瀏覽器均支持,而VBScript腳本只有部分瀏覽器支持。故,靜態網頁使用的腳本一般是JavaScript腳本。
3.VB→VBScript→ASP,VB是VBScript的語言基礎,VBScript是ASP的語言基礎。
4.VBScript腳本分客戶端運行和服務器端運行,如果是客戶端運行即為普通腳本,就是大家通常所看到的一些網頁特效;如果設定在服務器端運行,即為ASP程序。
問:采用什么工具進行ASP編程?
答:記事本、FrontPage 、Dreamweaver都可以開發ASP。
記事本是要采用手工輸入代碼方式,顯然不適合開發代碼相對復雜的ASP。
FrontPage 、Dreamweaver比較方便ASP的開發,但本人不習慣使用,并且產生的代碼比較復雜,不精煉。
本人常用的方式是:手中儲備有上百條常用的ASP代碼模塊,在Dreamweaver中做完網頁的靜態部分,再把所需要的ASP代碼模塊拷入HTML代碼之中,在代碼視圖下,修改完善ASP代碼。
問:我使用Dreamweaver開發ASP,是不是不需要學習ASP?
答:有人有這樣的經歷,在沒有學習HTML語言的情況下,在Dreamweaver編輯狀態下,就可以制作靜態頁面。(其實,如果要設計精美、復雜、專業性的靜態網頁,必須掌握HTML)。是不是動態網頁也是這樣呢?
在Dreamweaver編輯狀態下制作ASP動態網頁,必須掌握ASP語言。Dreamweaver編輯狀態,只能減輕你手工輸入ASP代碼的麻煩,但在Dreamweaver編輯狀態下開發ASP,如果你不懂ASP,將無從下手,在制作過程中,將不斷彈出的設置對話框,你就不知道如何進行填寫。
問:什么是Web服務器?
答:一種具有高性能的計算機。網站所包含的文件就是存儲在里面。通過服務器上安裝的Web服務器軟件,例IIS,有效地管理網站,并接受用戶在客戶端通過瀏覽器發出的瀏覽請求,然后發送請求瀏覽的網頁到用戶瀏覽器。
中小型企業要建立自己的Web服務器一般選擇的是易上手易管理的Windows 2000 Server,也可以選擇Windows 2003 Server。我們可以通過這些操作系統里的Web服務器軟件IIS(Internet Information Server,因特網信息服務)組件來建立Web服務器。
注意:如果你的機子安裝的是Windows 2000 Server操作系統,IIS默認已安裝;如果是Windows 2000 個人版或XP或Windows 2003 Server,則需要自定義安裝IIS。
問:我的服務器安裝的是Windows 2003 Server,但似乎不支持ASP?
答:在Windows 2000 Server中,默認支持ASP,但在Windows 2003 Server中,ASP功能默認關閉,需要在IIS→WEB擴展設置中設置啟動ASP。通常還需要在IIS→網站屬性設置中,設置啟用父路徑。數據庫文件屬性安全設置中,設置USERS用戶可寫入,這樣你的ASP系統才可以正常運行。
問:如果我的服務器安裝的不是微軟操作系統,如何支持ASP?
答:有的網絡操作系統不支持ASP或是支持效果不好,所以ASP程序最好放在Windows操作環境的Web服務器上運行。如果要運行在非Windows平臺,例如Unix、Linux等,則要安裝相應的ASP腳本解釋引擎軟件。
問:ASP頁面與HTML頁面相比,誰的打開速度快?
答:ASP頁面運行速度比普通的HTML頁面要慢,畢竟ASP程序放在服務器端,要由服務器解釋并轉化成標準的HTML頁面,還要讀取后臺數據庫,因此造成速度相應比較慢。為了減輕服務器的負擔,同時提升網站頁面打開速度,一些信息長久不變的頁面,最好做成靜態頁面。
問:學習ASP,要掌握HTML語言嗎?
答:一定要,通常學習順序是,先掌握靜態網頁語言HTML,再學習動態技術。在ASP頁面文件中,通常即有HTML代碼,又有ASP代碼,ASP代碼是嵌入在HTML代碼適當位置處,與之混合在一起。在HTML代碼中,表單類的代碼要非常熟悉,因為通常在ASP系統中通常是通過表單形式采集瀏覽者信息,與之交互。
問:如何理解ASP運行在服務器端,而VB腳本運行在客戶端瀏覽器上?
答:用以下例子:
建兩個文件,其一為靜態頁,包含以下VB腳本代碼:
由于VB腳本由客戶端瀏覽器解析,所以,顯示的時間是你的電腦的系統時間,你可以更改你的電腦的系統時間,可以看到彈出消息框中的時間隨之變化。
另一為ASP文件,包含以下ASP代碼:
<%=now()%>
由于ASP代碼由服務器解析,所以,顯示的時間是服務器的系統時間,更改你的電腦的系統時間,可以看到頁面時間沒有隨之變化。
問:為什么學習動態網頁制作,掌握表單很重要?
答:動態網頁就要是實現交互功能,即網站瀏覽者與網站交互,進行信息在線交流,而采集用戶信息的方式,即是通過表單形式,例如,用戶注冊表單、用戶發表文章表單、在線調查表單、登錄表單等等。
表單代碼屬于HTML代碼,標簽為:
問:常用的表單元素有哪些?
答:常用的表單元素有文本域、下拉菜單、單選按鈕、復選按鈕、提交按鈕、重置按鈕等。提交按鈕是表單中不可缺少的表單元素;文本域用于采集較多字符,所采集的信息送到ACCESS數據庫存儲。
問:如何制作表單?
答:表單代碼是HTML代碼。可以在Dreamweaver中制作表單,先插入一表單域,插入布局表格(為了讓表單元素美觀整齊排列),再插入表單元素。
為了防止用戶輸錯信息,可以設置表單信息驗證,可以采用腳本實現(Dreamweaver中的行為面板),也可以用ASP程序實現。
問:表單屬性含義是什么?
答:主要有兩個表單屬性,method和action。
method用于指定數據發送方式,POST或GET,一般采用POST方式。
Action屬性用于設置處理表單信息方式。
如果信息發送到電子郵箱,則action=mailto:jxciazb@126.com,另外還要配上一表單屬性(不提,有興趣者網上搜索);
action=“1.asp”,表示將表單數據送至1.asp。由1.asp中的ASP程序處理,此表單頁面不含動態程序代碼,文件類型為html文件;
action="",表示將表單數據送至本頁面。由本頁面的ASP程序處理,此表單頁面含ASP程序代碼,文件類型為ASP文件;
如果表單中含有“文件選擇”表單元素,則必須要配有ENCTYPE="multipart/form-data"表單屬性。
問:什么是Web數據庫?
答:ASP系統中通常要使用數據庫用于信息存儲,比如公司動態信息、客戶留言等。ASP常用的數據庫系統有Access和SQL Server。前臺ASP技術+后臺數據庫技術才能開發功能強大的ASP系統。
問:ASP系統所采集的信息可以不存儲在數據庫中嗎?
答:可以。EXCEL、記事本都可以存儲,甚至你可以將表單采集的信息發送至您的電子郵箱。但存儲在Access或SQL Server中是常用的方式。
問:為什么大多數中小型ASP網站選擇 Access為數據庫?
答:Accsee是微軟Office系列辦公軟件包的重要組成部分,安裝Office時默認自動安裝了Access。Access配置簡單、移植方便,但效率低,適合做中小型動態網站的Web數據庫。
▲ Access數據庫使用簡單,用戶能迅速掌握它的使用方法。
▲ 對于一般的單位網站或個人網站,Access數據庫存儲與管理數據的功能綽綽有余。
▲ 如果ASP系統是基于Access數據庫開發的,現在想把數據庫轉換成SQL Server數據庫也很方便,只要利用SQL Server的導入功能就能輕松實現這種轉換。由于存取Access和SQL Server數據庫采用的都是標準SQL語言,ASP程序幾乎不用改寫,需要改寫的就是連接數據庫的語句。
SQL Server:
是微軟提供的運行在Windows操作平臺上的數據庫系統,操作也比較簡便,屬于大型數據庫。通常在使用ASP開發大中型動態網站時使用SQL Server作為Web數據庫。
如果你所開發的ASP系統,以前采用ACCESS數據庫,后隨著數據量增大,需要改用SQL SERVER為數據庫,ASP系統中ASP代碼基本不需要作變動(除連接數據庫的代碼),因為ACCESS和SQL SERVER,都是采用標準的SQL命令對數據庫進行操作。
問:Access數據庫作為網站數據庫,有什么要注意事項?
答:
1.Access數據庫文件名不能用中文,但表名和字段名可以用中文。
2.不要使用time、table等敏捷單詞為表名或字段名,不然ASP系統工作時,可能報錯。
3.字段如果是文本數據類型,只能存儲不超過255個字符,超過的字符自動刪除,所以如果此字段需要存儲的字符數較多,可以設置為“備注”數據類型。
問:什么是SQL語言?
答:前臺ASP程序與后臺數據庫結合,才能實現強大功能的ASP系統。對數據庫進行查詢、刪除、添加、更新記錄操作,則是通過SQL語句。SQL是專為數據庫而建立的標準操作命令集。
問:查詢Select語句如何使用?
答:Select * from users
說明:從表users中選取全部記錄。
Select name,class,age from users
說明:從表users選取指定列name、class、age的記錄,注意語句中列之間用逗號相隔。
Select * from users where class=“05網絡4”
說明:根據條件選取記錄
Select * from users order by age asc
說明:查詢結果排序,asc表示按升序排,升序是默認的排序,所以asc可省略不寫。
Select * from users order by age desc
說明:查詢結果排序,desc表示按降序排。
Select top 10 * from users
說明:只先選取前10條記錄。
Select name,(test1+test2+test3) as testnum from users
說明:從表中原有的字段產生派生字段,“test1+test2+test3”將字段test1、test1、test1值相加產生派生字段testnum,注意在這里test1、test1、test1為數字類型的字段,所派生的字段testnum并不是表中的真正字段,但派生出來后,以后就可以用testnum來引用。
Select * from users where name like “%張%”
說明:模糊查找,從表中查找姓名中含有“張”字的記錄。
問:添加Insert語句如何使用?
答:
用于向數據庫添加記錄。語法如下:
Insert into 數據表(字段1,字段2,…)values(字段1的值,字段2的值,…)
說明:
▲ values中字段值的順序一定要與前面的字段順序相對應。
▲ 字段之間,字段值之間用逗號相隔。
▲ 如果某字段的類型為字符型或日期型,該字段值要用引號括起來,單引號雙引號都可以。
舉例如下:
Insert into users(name,class,age) values(“張三”,“信息五班”,“20”)
說明:向表users插入一條新記錄。
問:刪除Delete語句如何使用?
答:用于從數據表中刪除記錄。語法如下:
Delete from 數據表[where 條件]
說明:
▲ where 條件,可以按條件從表中刪除記錄。
▲ 如果沒有“where 條件”,則表示刪除表中所有記錄。
舉例如下:
Delete from users where name=“張三”
說明:從表中刪除張三的記錄。
問:更新Update語句如何使用?
答:更新數據表中的記錄。語法如下:
Update 數據表名 set 字段1=字段值1,字段2=字段值2,…[where 條件]
說明:
▲ where 條件,可以按條件從表中更新記錄。
▲ 如果沒有“where 條件”,則表示更新表中所有記錄。
舉例如下:
Update users set class=“信息六班” where name=“張三”
說明:從表中更新張三的class字段值。
問:為什么我的記錄集的RecordCount值總是返回-1?
答:你應當使用這種模式來打開存取數據庫的記錄集:rec.open strSQL,conn,1,1
其中的strSQL是操作數據庫的SQL語句;conn是聯接數據庫的Connection 變量。
問:我在ASP腳本中寫了很多的注釋,這會不會影響服務器處理ASP文件的速度?
答:經國外技術人員測試,帶有過多注釋的ASP文件整體性能僅僅會下降0.1%,也就是說基本上不會影響到服務器的性能下降的。
問:我有沒有必要在每一個ASP文件中使用“Option Explicit”?
答:你最好這樣,因為這樣可以使得你的程序出錯機會降到最少,并且會提升整體性能將近9.8% 。
問:最近隨同IIS5.0一起出現的ASP3.0有何新的功能?
答:其實并沒有什么新的變化,但是新增加了兩個Server對象的方法:
Server.Transfer以及Server.Excute,還有一個新的對象ASPError。具體的使用方法請參考微軟的網站:www.microsoft.com。
問:為什么我使用“Window.open()”方法打開的新窗口的ASP頁面中經常會出現Session丟失的現象?
答:在微軟的IE4.x會經常出現這種情況,但IE5.x中已經解決了這個錯誤。所以,為了兼容所有的瀏覽器,你可以使用諸如“test.asp?name=xxx”的方式來在窗口之間傳遞參數,這樣的效果更好,只是要注意,如果傳遞的參數很重要,請不要使用明文方式進行傳遞,否則很容易導致安全問題。
問:經常看到聯接數據庫有兩種方式DSN以及DSN-LESS,兩者是什么意思?有什么不同嗎?
答:DSN是英文“Data Source Name”的縮寫,DSN方式也就是采用數據源的聯接方式,這個數據源可以在“控制面板”里面的“ODBC Data Sources”中進行設置,然后就這樣使用:
Conn.Open “DSN=Test;UID=Admin;PWD=;”
其中的“Test”就是你自己設定的數據源的名稱。注意,要同時使用UID以及PWD,否則會出錯。
同樣的,DSN-LESS就是非數據源方式的聯接方法,使用方法是:
Conn.Open “Driver={Microsoft Access Driver (*.mdb)};Dbq=\somepath\mydb.mdb;Uid=Admin;Pwd=;”
在相同的硬件環境下,DSN-LESS方式要比DSN方式的性能要高,但是一旦ASP源代碼因為某些安全問題而被別人用到,將會泄漏數據庫的賬號以及密碼,所以這兩種方式是有利有弊的。
問:在ASP中使用ADO的AddNew方法和直接使用“Insert into…”語句有和不同?那種方式更好?
答:ADO的AddNew方法只是將“Insert into ”語句封裝了起來,所以,當對大量數據進行操作的時候,直接使用SQL語句將會大大加快存取數據的速度,因為他減少了ADO的“翻譯”時間。雖然SQL語句不如AddNew等語句容易接受,但是學習一些常用的SQL語句在進行數據庫編程中是非常重要的。
問:為何我將這句話(“Let’‘s go now!”)插入到數據庫中的時候會發生錯誤?
答:因為大多數的數據庫(Access,MS SQL Server)都把單引號當作分割符號使用的,所以不可以直接將單引號插入到數據庫中,你必須在執行SQL語句之前,分別將每一個單引號替換成兩個單引號:
MyData=Replace(MyData," ‘’ “,” ‘’’’ ",1)然后,在保存到數據庫中就行了。
問:On Error 語句的作用是什么?
答:該語句的作用是:啟用或禁用錯誤處理程序。一般用法如下:
On Error Resume Next
On Error GoTo 0
如果在您的代碼中未使用On Error Resume Next語句,所發生的運行時錯誤將顯示錯誤信息,同時,代碼的執行也隨之終止。
但當你采用它時,就會使程序按照產生錯誤的語句之后的語句繼續執行,或是按照最近一次所調用的過程(該過程含有 On Error Resume Next 語句)中的語句繼續運行。這個語句可以不顧運行時錯誤,繼續執行程序,之后您可以在過程內部建立錯誤處理例程。
在調用另一個過程時,On Error Resume Next 語句變為非活動的。所以,如果希望在例程中進行內部錯誤處理,則應在每一個調用的例程中執行 On Error Resume Next 語句。
如果您已啟用 On Error Resume Next 錯誤處理程序,則可使用On Error GoTo 0禁用錯誤處理程序。
ASP初學者常犯的幾個錯誤
1.記錄集關閉之前再次打開:
sql=“select * from test”
rs.open sql,conn,1,1
if not rs.eof then
dim myName
myName=rs(“name”)
end if
sql=“select * from myBook”
rs.open sql,conn,1,1
解決:在第二次rs.open之前先關閉 rs.close
或
set rs1=server.createobject
rs1.open sql,conn,1,1
2.用SQL關鍵字做表名或字段名
sql=“select * from user”
rs.open sql,conn,1,1
user為sql關鍵字
解決:改為
sql=“select * from [user]”
3.用鎖定方式去進行update
sql=“select * from [user]”
rs.open sql,conn,1,1
rs.addnew
或
rs(“userName”)=“aa”
rs.update
當前記錄集的打開方式為只讀
解決:改為
rs.open sql,conn,1,3
4.在查詢語句中采用的對比字段值與字段類型不符
sql=“select * from [user] where id=’” & myID & “’”
rs.open sql,conn,1,1
假設表中設計ID為數字型,那么此時出錯。
解決:
sql=“select * from [user] where id=” & myID
5.未檢查變量值而出錯
sql=“select * from [user] where id=” & myID
rs.open sql,conn,1,1
假設myID變量此時值為null,那么sql將成為
sql=“select * from [user] where id=”
解決:在前面加上
if isnull(myID) then 出錯提示
6.未檢查變量值類型而出錯
sql=“select * from [user] where id=” & myID
rs.open sql,conn,1,1
假設id為數字型,myID變量此時值不為null,但為字符,比如myID此時為"aa"
那么sql將成為
sql=“select * from [user] where id=aa”
解決:在前面加上
if isnumeric(myID)=false then 出錯提示
這也可以有效防止 sql injection 漏洞攻擊。
7.由于數據庫文件所在目錄的NTFS權限而引起的"不能更新,數據庫或對象為只讀。"錯誤。
說明:WIN2K系統延續了WINNT系統的NTFS權限,對于系統中的文夾都有默認的安全設置,而通過HTTP對WWW訪問時的系統默認用戶是 iusr_計算機名用戶,它屬于guest組。當通過HTTP訪問時,可以ASP或JSP,或PHP或.NET程序對數據進行修改操作。
比如:當打開某一個文章時,程序設定,文章的閱讀次數=原閱讀次數+1
執行conn.execute(“update arts set clicks=clicks+1 where id=n”)語句時,如果 iusr_計算機名用戶沒有對數據庫的寫權限時,就會出錯。
解決方法:找到數據庫所在目錄→右鍵→屬性→安全選項卡→設置iusr_計算機名用戶的寫權限(當然,也可以是everyone)。
總結
以上是生活随笔為你收集整理的【工控老马】ASP问与答40篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【造轮子/更新】打造一个简单的万能Exc
- 下一篇: eNSP仿真企业网络路由器、交换机实验总