ASP技術在論壇中的運用(三)

來源:互聯網
上載者:User
先要給出一個表單,能夠讓網友輸入註冊資訊,這些是HTML的內容,且放在一邊,我們來仔細看看具體實現註冊的ASP指令碼。

  ' 將資料中的單引號改成兩個單引號,並且在前後加上單引號

  Function SqlStr( data )

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

  End Function

  這是一個自訂的函數,用來把使用者輸入中的單引號(’)轉換成兩個單引號(’’)。在ASP中,用雙引號圍著的是字串,因而上面的"'"代表的就是只有一個單引號的字串。之所以要把一個單引號換成兩個單引號,這是因為在SQL語句中,用單引號圍起來是用來代表變數的。為了不至於混淆,就要把字串中的單引號用兩個單引號來表示。而所有的使用者輸入都要作為變數嵌入到SQL語句中的,所以這個函數是必不可少的。

  

  '存貯準備

  id=Request("id")

  password=Request("password")

  nickname=Request("nickname")

  email=Request("email")

  sex=request("sex")

  

  把來自使用者輸入表單中的內容儲存在變數中,這不是必須的,但寫了更容易讀寫。

  

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

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

  

  因為這些內容不是必須填的,為了防止使用者沒有輸入任何內容,而造成資料庫操作上的錯誤,就必須把沒有填入欄位用空格來代替。

  

  '建立串連

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

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

  

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

  

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

  '查詢作者是否已存在

  Set cmd.ActiveConnection = conn

  cmd.CommandText = "查詢作者"

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

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

  Set rs = cmd.Execute( ,param )

  

  這一段就是用來執行存貯查詢的。在ADO中執行查詢的方法有很多種,但是對於存貯查詢就只能使用Command對象了。首先,建立了一個叫做cmd的Command對象,然後把conn連線物件賦給cmd對象的ActiveConnection屬性,把要執行的查詢名稱"查詢作者"賦給CommandText屬性,然後為查詢參數賦值。我們聲明了一個參數數組param(0),因為在"查詢作者"這個查詢中只有一個參數,所以數組就只有一個分量了。一般的,在查詢中有幾個參數,就要申明有相應分量個數的參數數組。並且參數出現的順序是個數組中分量的順序是對應的。在使用參數查詢的過程中,尤其要注意的是,參數的類型要嚴格匹配,否這就會出錯,所以上面的CStr()類型轉換函式是不可缺少的。

  

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

  response.write "

錯誤,你輸入的ID號已經被佔用,請換一個再試試!
"

  

  else

  

  sql = "Insert Into 作者表 (id, 暱稱, Email, 密碼,姓名,學校,系別,性別,電話) 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

  調用一個SQL的Insert語句把資料插入到資料庫中。其實這一查詢也可以做成存貯查詢放在資料庫中,我偷了點懶:-)不過對比之下也可以看到存貯查詢的好處,運行時查詢寫起來實在是太麻煩了。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.