摘自:軟件世界 作者:阿干 對(duì)于用ASP技術(shù)編程的初學(xué)者來說,無從下手是第一感覺,筆者曾經(jīng)有這么一段經(jīng)歷。經(jīng)過一番"磨難"以后,你就會(huì)找到靈感。現(xiàn)將本人編程中積累的一些經(jīng)驗(yàn),擬成本文,奉獻(xiàn)給讀者。 1 首先要學(xué)習(xí)一些例子程序。 接到任務(wù)后,不要盲目地急于編寫代碼,而是先看一下別人成功的例子,然后在其上修改或模仿調(diào)試,這樣會(huì)加快你熟悉的速度。例如,關(guān)于ASP編程的教科書上經(jīng)常有這么一個(gè)例子出現(xiàn),即顯示系統(tǒng)當(dāng)前時(shí)間的語(yǔ)句:<%=now()%> ,別看這么簡(jiǎn)單的一條語(yǔ)句,里邊卻包含了ASP的編程思想和格式,會(huì)給你后邊的工作帶來很大的幫助。比如說,測(cè)試IIS(Internet Information Server)WEB SERVER是否正常工作,用上邊的一個(gè)語(yǔ)句測(cè)試就足夠了。 2 在WINDOWS NT上安裝ODBC后,要測(cè)試和后臺(tái)數(shù)據(jù)庫(kù)確實(shí)連通后,再開始編程測(cè)試。 可能您沒有看懂題目的意思,我在這里解釋一下:比如說,后臺(tái)數(shù)據(jù)庫(kù)是ORACLE,那么在NT SEVER上首先要安裝SQL*NET(或NET 8),然后配置ODBC,確定和ORACLE數(shù)據(jù)庫(kù)連通,可以用SQL*PLUS測(cè)試,還要選擇和ORACLE數(shù)據(jù)庫(kù)相同的字符集,這個(gè)工作要在注冊(cè)表里完成。最后在ODBC里邊測(cè)試和ORACLE數(shù)據(jù)庫(kù)連通后,說明WEB SERVER 到后臺(tái)數(shù)據(jù)庫(kù)端的工作就完成了,下邊再開始編程工作。反過來,你若先編程,后做ODBC的工作,那么你無法調(diào)試程序是否正確,可能大大降低編程效率。在ODBC配置中要選擇MICROSOFT ODBC FOR ORACLE,不要選擇ORACLE ODBC DRIVER,否則不能和數(shù)據(jù)庫(kù)建立聯(lián)系。 在ASP程序中,和數(shù)據(jù)庫(kù)連接的語(yǔ)句是比較固定的,舉例如下: Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "odbclink","o7people","peoplepd" 在這里,odbclink是數(shù)據(jù)源的名字,可以說成是ODBC和數(shù)據(jù)庫(kù)連接的定義,o7people是ORACLE的一個(gè)用戶名,peoplepd是用戶o7people的密碼。 3 記錄下出錯(cuò)信息,尋找糾錯(cuò)規(guī)律。 在編程、調(diào)試過程中,是一個(gè)出錯(cuò)、糾錯(cuò)的循環(huán)過程,但是時(shí)間長(zhǎng)了,會(huì)發(fā)現(xiàn)一些規(guī)律,排除錯(cuò)誤的效率會(huì)大大提高。 3.1 出錯(cuò)信息: Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 '80040e14' [Microsoft][ODBC driver for Oracle][Oracle]ORA-00933: SQL command not properly ended /default.asp, 行781 這種錯(cuò)誤,一般是在執(zhí)行 Conn.Execute("SQL 語(yǔ)句")操作時(shí),所定義的"SQL 語(yǔ)句"有問題,檢查此語(yǔ)句就能發(fā)現(xiàn)問題,如日期格式不對(duì),等等。 zhezhong 3.2 出錯(cuò)信息: ADODB.Field 錯(cuò)誤 '800a0bcd' BOF 或 EOF 中有一個(gè)是"真",或者當(dāng)前的記錄已被刪除,但應(yīng)用程序要求操作的是當(dāng)前的記錄。 /lzjsblr.asp, 行123 這個(gè)錯(cuò)誤,一般發(fā)生在執(zhí)行下列語(yǔ)句的過程中: set RS = Conn.Execute("SQL 語(yǔ)句" ) varnum1=RS(0) RS.CLOSE 所取的值RS(0)無意義或無意義,還要檢查"SQL 語(yǔ)句"的正確性。 3.3 出錯(cuò)信息: Microsoft VBScript 編譯器錯(cuò)誤 錯(cuò)誤 '800a0409' 未結(jié)束的字符串常量 /people/default.asp, 行86 insert_sql = insert_sql & dwdm & ",'" & d1 & "','" & t1 & "','" & t2 & "', --------------------------------------------------------------------------^ 次項(xiàng)錯(cuò)誤也是出在SQL語(yǔ)句的定義上,檢查引號(hào)、單引號(hào)等的配對(duì)情況。 4 下邊是一個(gè)基于瀏覽器的網(wǎng)上用戶注冊(cè)登記程序,筆者在里邊運(yùn)用了一些技巧,奉獻(xiàn)給感興趣的讀者。 <html> <head> …… < <%'和數(shù)據(jù)庫(kù)連接 Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "odbclink","o7people","peoplepd" '將選擇的數(shù)據(jù)放入選擇框 Set RS = Conn.Execute("SELECT dwmc FROM tab_dw order by dwdm") %> <% Do While Not RS.EOF %> <option><% = RS(0) %></option> <% RS.MoveNext Loop RS.Close %> <% '定義變量 Dim D1,D2,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,csrq,sqrq '事件觸發(fā)按鈕 B1="commit" B2="return" %> <% '將信息初始化 Sub Reset() D1 = "" …… T9 = date() T10 = "" End Sub %> <% Call Reset() %> <% '信息提交條件(觸發(fā)條件) if Request("B1") = "commit" Then 'Save Button D1 = Request("D1") set DWDM_RS = Conn.Execute("SELECT dwdm FROM table_dw where dwmc='"&D1&"' " ) DWDM=DWDM_RS(0) DWDM_RS.CLOSE D2 = Request("D2") …… '日期數(shù)據(jù)轉(zhuǎn)換成ORACLE識(shí)別的格式 csrq = DAY(T6) & "-" & month_array(Month(T6)) & "-" & Year(T6) sqrq = DAY(T9) & "-" & month_array(Month(T9)) & "-" & Year(T9) '定義SQL語(yǔ)句 Sql_insert = "INSERT INTO peopleuser(dwdm,dwmc,sjks,tele,address,zipcode,xm,xb,csrq,peoplename,peoplepd,sqsj,bz) VALUES ('" Sql_insert = Sql_insert & DWDM & "','" & D1 & "','" & T1 & "','" & T2 & "','" & T3 & "','" & T4 & "','" Sql_insert = Sql_insert &T5&"','"& D2 & "','" & CSRQ & "','" & T7 & "','" & T8 & "','" & SQRQ & "','" Sql_insert = Sql_insert & T10 & "')" '將信息入庫(kù) Set LFMC_R4 = Conn.Execute(Sql_insert) '信息提交完成后,將屏幕信息初始化 call reset() end if %> ……
|