明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP技術(shù)在論壇中的使用(3)(吐血推薦!。。。

[摘要]先要給出一個(gè)表單,能夠讓網(wǎng)友輸入注冊(cè)信息,這些是HTML的內(nèi)容,且放在一邊,我們來(lái)仔細(xì)看看具體實(shí)現(xiàn)注冊(cè)的ASP腳本。   ' 將數(shù)據(jù)中的單引號(hào)改成兩個(gè)單引號(hào),并且在前后加上單引號(hào)   Function SqlStr( data )    SqlSt...
先要給出一個(gè)表單,能夠讓網(wǎng)友輸入注冊(cè)信息,這些是HTML的內(nèi)容,且放在一邊,我們來(lái)仔細(xì)看看具體實(shí)現(xiàn)注冊(cè)的ASP腳本。

  ' 將數(shù)據(jù)中的單引號(hào)改成兩個(gè)單引號(hào),并且在前后加上單引號(hào)

  Function SqlStr( data )

   SqlStr = "'" & Replace( data, "'", "''" ) & "'"

  End Function

  這是一個(gè)自定義的函數(shù),用來(lái)把用戶輸入中的單引號(hào)(’)轉(zhuǎn)換成兩個(gè)單引號(hào)(’’)。在ASP中,用雙引號(hào)圍著的是字符串,因而上面的"'"代表的就是只有一個(gè)單引號(hào)的字符串。之所以要把一個(gè)單引號(hào)換成兩個(gè)單引號(hào),這是因?yàn)樵赟QL語(yǔ)句中,用單引號(hào)圍起來(lái)是用來(lái)代表變量的。為了不至于混淆,就要把字符串中的單引號(hào)用兩個(gè)單引號(hào)來(lái)表示。而所有的用戶輸入都要作為變量嵌入到SQL語(yǔ)句中的,所以這個(gè)函數(shù)是必不可少的。

  

  '存貯準(zhǔn)備

  id=Request("id")

  password=Request("password")

  nickname=Request("nickname")

  email=Request("email")

  sex=request("sex")

  

  把來(lái)自用戶輸入表單中的內(nèi)容保存在變量中,這不是必須的,但寫(xiě)了更容易讀寫(xiě)。

  

  if Request("name")="" then name=" " else name=request("name")

  if Request("phone")="" then phone=" " else phone=request("phone")

  

  因?yàn)檫@些內(nèi)容不是必須填的,為了防止用戶沒(méi)有輸入任何內(nèi)容,而造成數(shù)據(jù)庫(kù)操作上的錯(cuò)誤,就必須把沒(méi)有填入字段用空格來(lái)代替。

  

  '建立連接

  Set conn = Server.CreateObject("ADODB.Connection")

  conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")

  

   這一段是建立數(shù)據(jù)庫(kù)連接,數(shù)據(jù)庫(kù)的名稱為bbssystem.mdb,這一段中唯一要注意的是Server.MapPath函數(shù)的應(yīng)用。一般來(lái)說(shuō),凡是涉及到具體的目錄的地方,都不要直接使用目錄名,而用Server.MapPath函數(shù)來(lái)代替。善用好Server.MapPath和Request.ServerVariables()等函數(shù),能夠讓你的WEB應(yīng)用具有更好的可移植性。

  

  Set cmd = Server.CreateObject("ADODB.Command")

  '查詢作者是否已存在

  Set cmd.ActiveConnection = conn

  cmd.CommandText = "查詢作者"

   ReDim param(0) ' 聲明參數(shù)數(shù)組

  param(0) = CStr(id) ' Cint 不可忽略

  Set rs = cmd.Execute( ,param )

  

  這一段就是用來(lái)執(zhí)行存貯查詢的。在ADO中執(zhí)行查詢的方法有很多種,但是對(duì)于存貯查詢就只能使用Command對(duì)象了。首先,建立了一個(gè)叫做cmd的Command對(duì)象,然后把conn連接對(duì)象賦給cmd對(duì)象的ActiveConnection屬性,把要執(zhí)行的查詢名稱"查詢作者"賦給CommandText屬性,然后為查詢參數(shù)賦值。我們聲明了一個(gè)參數(shù)數(shù)組param(0),因?yàn)樵?quot;查詢作者"這個(gè)查詢中只有一個(gè)參數(shù),所以數(shù)組就只有一個(gè)分量了。一般的,在查詢中有幾個(gè)參數(shù),就要申明有相應(yīng)分量個(gè)數(shù)的參數(shù)數(shù)組。并且參數(shù)出現(xiàn)的順序是個(gè)數(shù)組中分量的順序是對(duì)應(yīng)的。在使用參數(shù)查詢的過(guò)程中,尤其要注意的是,參數(shù)的類型要嚴(yán)格匹配,否這就會(huì)出錯(cuò),所以上面的CStr()類型轉(zhuǎn)換函數(shù)是不可缺少的。

  

  if not (rs.eof or rs.bof) then

  response.write "

錯(cuò)誤,你輸入的ID號(hào)已經(jīng)被占用,請(qǐng)換一個(gè)再試試!
"

  

  else

  

  sql = "Insert Into 作者表 (id, 昵稱, Email, 密碼,姓名,學(xué)校,系別,性別,電話) Values( "

  sql = sql & SqlStr(id) & ", "

  sql = sql & SqlStr(nickname) & ", "

  sql = sql & SqlStr(email) & ", "

  sql = sql & SqlStr(password) & ", "

  sql = sql & SqlStr(name) & ", "

  sql = sql & SqlStr(school) & ", "

  sql = sql & SqlStr(department) & ", "

  sql = sql & SqlStr(sex) & ", "

  sql = sql & SqlStr(phone) & ")"

  

  conn.Execute sql

  調(diào)用一個(gè)SQL的Insert語(yǔ)句把數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。其實(shí)這一查詢也可以做成存貯查詢放在數(shù)據(jù)庫(kù)中,我偷了點(diǎn)懶:-)不過(guò)對(duì)比之下也可以看到存貯查詢的好處,運(yùn)行時(shí)查詢寫(xiě)起來(lái)實(shí)在是太麻煩了。