亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關(guān)軟件
    >用ASP連接數(shù)據(jù)庫 創(chuàng)建者:webmaster 更新時(shí)間:2005-07-02 00:11

    微軟公司的ASP加上IIS3.0就能為網(wǎng)站建設(shè)、INTRANET應(yīng)用提供一個(gè)靈活的構(gòu)建方法,他可以方便地訪問ODBC兼容的數(shù)據(jù)庫。


    這篇文章中,我們將學(xué)到數(shù)據(jù)庫的基本操作,比如建立、添加記錄、刪除記錄、編輯記錄等。


    使用ASP建立的動(dòng)態(tài)主頁與瀏覽器無關(guān),也就是說,你不論用哪種瀏覽器都能瀏覽ASP的頁面,使用JSCRIPT和VBSCRIPT加上一些其他ASP元件,你就能在你的INTRANET應(yīng)用中使用ASP。使用ASP不僅意味著您可以讀取ACCESS和SQL SERVER的數(shù)據(jù)庫,同時(shí)也意味著你可以讀取其他ODBC兼容的數(shù)據(jù)庫。 使用ASP將比編寫CGI快的多,對于那些習(xí)慣VISUAL BASIC的人來說, ASP將是最好的選擇。


    其他的如 Chili!ASP 功能上與ASP差不多,可以用在許多WWW平臺上,甚至一些UNIX服務(wù)器(比如重慶太陽城,Linux ,ASP腳本用的是PERL語言。譯注)。


    在調(diào)試ASP代碼時(shí),我沒有使用調(diào)試器,我發(fā)現(xiàn)大多數(shù)錯(cuò)誤都是由于我的拼寫錯(cuò)誤引起的,或者是在HTML中嵌入變量時(shí)沒有使用??#ü賾讜?TML中引用ASP變量值,或者輸出,我在第一篇文章中有說明。譯注)。


     


     


    這里提供的代碼僅是一個(gè)例子,不能用做一個(gè)應(yīng)用。如果在沒有記錄時(shí),您嘗試刪除記錄或編輯記錄,程序并沒有處理這種情況。這個(gè)例子是在NT4.0上建立的,數(shù)據(jù)庫用MS Access 7,你必須有32位的ODBC驅(qū)動(dòng)程序。(如果你安裝了IIS3。0或ACCESS,那自然是已經(jīng)有了,譯注)


    下面的例子包含了數(shù)據(jù)庫的基本操作,但是這些操作可能每一個(gè)用ASP訪問數(shù)據(jù)庫的人都會(huì)用到。你可以往數(shù)據(jù)庫中添加記錄,編輯或刪除記錄。


     


    圖一:數(shù)據(jù)庫Microsoft Access


     


    數(shù)據(jù)庫


    我用ACCESS的數(shù)據(jù)庫做,建立一個(gè)數(shù)據(jù)庫user.mdb


    他包含兩個(gè)表:TblUser,TblUserAccess.


    TblUSer, 包含用戶的一些信息,有以下字段: -用戶名,用戶登錄名 ,用戶口令,登錄時(shí)間和訪問級別 (USERNAME, USERLOGIN, USERPASSWORD, USERENTRYDATE, and ACCESSID). ACCESSID, 用戶級別指向表TblUserAccess中的 ACCESSID字段. 表 TblUserAccess 用來定義訪問級別- ACCESSDESC


     


    DSN


    一旦你建好了數(shù)據(jù)庫,你需要為數(shù)據(jù)庫建立一個(gè)DSN入口,不防給他取名叫:UserDB1. 照下面的步驟去做:(關(guān)于DSN,我將在本文末做介紹,譯注)


    單擊???,選設(shè)置控制面板。


    雙擊圖標(biāo) "32位 ODBC",將彈出一個(gè)對話框,選標(biāo)簽 "System DSN"


    單擊 "Add" 添加一個(gè) DSN 入口, 選擇 "Microsoft Access Drive".確認(rèn)。


    在 "Data Source Name" 欄里輸入 "UserDB1", 然后單擊"Select" 選擇數(shù)據(jù)庫,你可以按"Browse" 來選中 users.mdb.你可以把數(shù)據(jù)庫放在任何位置,比如建立一個(gè)目錄來放吧: c:\inetsrv\wwwroot\users\users.mdb


     


    圖二:連接數(shù)據(jù)庫,方法一


    <% Conn.Open "ADOSamples" Set RS = Conn.Execute("SELECT * FROM TblUser") Do While Not RS.EOF . Response.Write(rs("USERNAME")) . . RS.MoveNext Loop RS.Close Conn.Close %>


    連接數(shù)據(jù)庫 方法一


    ASP提供兩種方法來訪問數(shù)據(jù)庫。在第一中方法中,你首先必須建立一個(gè)連接,之后,你可以加載任何合法的SQL語句。最后,關(guān)閉連接。 一些代碼你可以直接拿來用。圖二中,用?serDB1??SN,建立連接后,可以用Execute加載任何合法的SQL語句。之后,在一個(gè)循環(huán)中引用數(shù)據(jù)。必須注意的是,在最后一定要記住關(guān)閉連接。


     


     


    圖三:連接數(shù)據(jù)庫 方法二


    SUB Session_OnStart


    '---- Open ADO connection to database


    Conn.Open "UsersDB1", "userdblogin","userdbpassword"


    END SUB


     


    圖四:文件Global.asa 中用于連接的串


    Conn.Open "UserDB1", "userdblogin","userdbpassword"


    連接數(shù)據(jù)庫 方法二:


    另外一種方法是在用戶的SESSION中建立連接。當(dāng)SESSION結(jié)束時(shí),關(guān)閉連接。這要用到文件Global.asa.每一個(gè)基于ASP的INTRANET應(yīng)用都可以有一個(gè)global.asa,它應(yīng)當(dāng)存放在這個(gè)應(yīng)用的根目錄下。在 global.asa 文件中可以定義四個(gè)事件處理程序,四個(gè)事件是:- Application-Start , Session-Start, Application-End 和 Session-End. 你可以在事件session-Start 中打開數(shù)據(jù)庫連接,在事件Session-End 中關(guān)閉連接。


    在圖四中,用用戶名?serdblogin",口令"userdbpassword"建立了一個(gè)到DSN "UserDB1"的連接。在整個(gè)SESSION中都可以使用連接"Conn".


    大家可以看例子default.asp 和文件global.asa.


     


     


    圖五:取得表單元素的值.


    Action = Request.Form("Action")


     


    從表單中取得信息


    在基于ASP的應(yīng)用中,你可以將ASP的例程代碼放在一個(gè)專門的文件中,然后在需要的地方用"include"包含進(jìn)來。圖五中取得表單元素"Action"的值


    圖六:生成控制條


     


    if Action = "" or Action= "ADD" then


    CBar=CBar & " < td valign=top><input type=submit name=Action value=Add></td>"


    CBar=CBar & "< td valign=top><input type=submit name=Action value=Edit></td>"


    CBar=CBar & "<td valign=top><input type=submit name=Action value=Delete></td>"


    end if


     


     


    生成控制條


    依照action的值,可以顯示不同的控件,發(fā)送不同的HTML文本到瀏覽器,圖六中的代碼表示,如果Action的值為空或?yàn)?ADD",就顯示控件?砑?,?嗉?,?境?。


    圖七:插入記錄


    sqlstr= "INSERT INTO TblUser " sqlstr= sqlstr & "(USERNAME, USERLOGIN, USERPASSWORD," sqlstr= sqlstr & " USERENTRYDATE, ACCESSID )VALUES " sqlstr= sqlstr & "('" & USERNAME & "','" & USERLOGIN & "','" sqlstr= sqlstr & "& USERPASSWORD & "',#" & datetoday & "#," & ACCESSID & ")"


    插入記錄


    在檢查了用戶輸入的各個(gè)表單域都合法時(shí),就可以往數(shù)據(jù)庫里插入記錄。我們使用的是SQL語句來完成這件事。注意我們用了VBSCRIPT的函數(shù) ForMatDateTime 來轉(zhuǎn)換日期成 "mm/dd/yy" 格式(見default.asp,譯注)。


    圖八:查出所有記錄


    sqlstr="SELECT * FROM TblUser ORDER BY USERNAME ASC" set rsUsers=Conn.Execute(sqlstr)


    編輯記錄


    為了編輯記錄,我用兩步實(shí)現(xiàn)。首先,查詢出所有記錄(只顯示姓名),并在每一條記錄旁顯示一個(gè)單選扭,當(dāng)用戶選了要編輯的記錄后,提交表單,然后才開始修改記錄。圖八中表示如何查詢出所有記錄。


    圖九:更新記錄


    size="4">


    sqlstr= "UPDATE TblUser "


    sqlstr= sqlstr & "SET USERNAME ='" & USERNAME & "', "


    sqlstr= sqlstr & "USERLOGIN ='" & USERLOGIN & "', "


    sqlstr= sqlstr & "USERPASSWORD ='" & USERPASSWORD & "', "


    sqlstr= sqlstr & "USERENTRYDATE =#" & datetoday & "#, "


    sqlstr= sqlstr & "ACCESSID =" & ACCESSID


    sqlstr= sqlstr & " WHERE USERID=" & USERID & ";"


     


    更新記錄


    實(shí)際的修改是在圖九中用SQL實(shí)現(xiàn)的。


    圖十:控制程序流向


    <% if Action="EDI" or Action="DEL" then '---- Edit Mode do until rsUsers.EOF strUsers=strUsers & "<option value=" & rsUsers("USERID") & ">" & rsUsers("USERNAME") rsUsers.MoveNext loop %>


    <tr><td valign=top>


    <select name="USERID">


    <%=strUsers%>


    </select>


    </td></tr>


    <% end if %>


     


    刪除記錄


    為了刪除記錄,必須知道一個(gè)用戶的 USERID,圖十的代碼生成了一個(gè)下拉菜單供選擇。


    下面是以上例子中用到的源代碼:(default.asp中的注釋已經(jīng)譯成中文,譯注)


    default.asp global.asa


     


    附:DSN(以下為譯者加上的)


    在用ODBC時(shí),經(jīng)常見到DSN這個(gè)名詞,那它是什么意思呢?DSN即Data Souce Name的意思,數(shù)據(jù)源名。我們知道,ODBC是一種訪問數(shù)據(jù)庫的方法,只要系統(tǒng)中有相應(yīng)的ODBC驅(qū)動(dòng)程序,任何程序就可以通過ODBC操縱驅(qū)動(dòng)程序的數(shù)據(jù)庫。比如,我們系統(tǒng)中有ACCESS的ODBC驅(qū)動(dòng)程序,那我們不需要有ACCESS軟件,就可以在我們的程序,如VB編的,VC編的等,中間往一個(gè)ACCESS的MDB數(shù)據(jù)庫中加、刪、改記錄。而且我們根本不用知道這個(gè)數(shù)據(jù)庫是放在那里的。我們只要寫一些SQL語句就可以了。ODBC驅(qū)動(dòng)程序會(huì)幫我們做一切事情。我們在給ODBC驅(qū)動(dòng)程序傳SQL指令時(shí),用的即是DSN來告訴他到底操作的是哪一個(gè)數(shù)據(jù)庫。如果數(shù)據(jù)庫的平臺變了,比如我們改用了SQL SERVER的數(shù)據(jù)庫,只要其中表的結(jié)構(gòu)沒變,我們就不用改寫我們的程序,只要重新在系統(tǒng)中配置DSN就行了。我們的程序還根本不知道已經(jīng)換了人為他服務(wù)了呢。


    由此可見,DSN是應(yīng)用程序和數(shù)據(jù)庫之間的橋梁,要通過ODBC訪問數(shù)據(jù)庫,前提就是,我們必須配置好DSN(即架好橋梁),從以上的我們可以看出,一個(gè)DSN必須包含一些信息,


    DSN的名字,就是給這座橋取個(gè)名字,我們的程序中訪問數(shù)據(jù)庫時(shí),給系統(tǒng)傳的就是這個(gè)名字,而不是數(shù)據(jù)庫的實(shí)際名字。


    用的是哪種ODBC驅(qū)動(dòng)程序,這樣子,在我們要操作數(shù)據(jù)庫時(shí),系統(tǒng)才會(huì)知道調(diào)哪個(gè)ODBC驅(qū)動(dòng)程序來服務(wù)。


    數(shù)據(jù)庫,你必須指定這座橋到底連接的是哪個(gè)數(shù)據(jù)庫,這好象不用多說哦:),但不同的數(shù)據(jù)庫系統(tǒng),指定數(shù)據(jù)庫的名字方法有些不同,ACCESS的就是讓你選一個(gè)MDB文件。


    這座橋是架在系統(tǒng)之中的,所以WIN95(NT)提供了一個(gè)工具來完成這件事,即是控制面板中的32 BIT ODBC,有三類DSN,用戶DSN,系統(tǒng)DSN,文件DSN,我們一般就用系統(tǒng)DSN,因?yàn)檫@樣可以讓所有人都使用這個(gè)DSN。

    相關(guān)文章
    本頁查看次數(shù):