麻辣家族討論版版's Archiver

小誌 發表於 2010-5-13 00:44

(ASP教學第13篇) 資料庫驅動程式 上篇

現今的網路電子商務免不了要與資料庫扯上關係,這裡所指的資料庫是:Web Server 上的資料庫喔!其實資料庫不就是一個檔案,但是,它是一個結構化儲存資料的格式檔案。其實我們常常在使用資料庫而不自知,怎麼說?你有沒有操作過.mdb 的檔案啊?它就是一個 Access 格式的資料庫檔案。

要存取網路伺服器上的資料庫可是跟我們單機上的操作有很大不同!在ASP網頁中要存取網路伺服器上的資料庫,必須使用存取資料庫的物件 ADO(ActiveX Data Objects), ADO 是存取資料庫物件們的統稱,我們主要用來存取資料庫的物件有下列三種
[list]
[*]Connection 物件[*]Recordset 物件[*]Command 物件[/list]

    在ASP中使用ADO物件就可以存取資料庫了嗎?當然是不行!除了ADO物件外我們還要有ODBC驅動程式,因為我們存取任何一種資料庫都必須有其相對應的ODBC驅動程式,ADO物件才能夠對資料庫的檔案作存取的動作!


[color=darkorange][size=5][b]資料庫驅動程式[/b][/size][/color]
我們存取任何一種資料庫都必須有其相對應的資料庫驅動程式,ADO物件才能夠對資料庫的檔案作存取的動作!
[list]
[*]ODBC (Open DataBase Connectivity)[*]OLE DB (Object Linking and Embedding DataBase)[/list]
    以上這兩者皆為驅動程式類別,應用程式可藉由此驅動程式介面來存取資料庫的資料,也就是說要使ADO物件可以存取資料庫,就必須安裝相對應之驅動程式,如下圖所示。
[attach]332[/attach]

[color=red]不同的資料庫驅動程式,存取相對應之資料庫類型[/color]
    請不要搞錯了喔!ODBC與OLEDB只是驅動程式們的統稱而已,每一種不同類型的資料庫都擁有自己相對應的驅動程式,如下表所示:
[table]
[tr][td=1,1,235][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]驅動程式名稱[/size][/font][/font][/p][/td][td=1,1,95][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]版本[/size][/font][/font][/p][/td][td=1,1,186][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]對應之資料庫[/size][/font][/font][/p][/td][/tr]
[tr][td=1,1,235][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Microsoft Access driver[/size][/font][/color][/font][/p][/td][td=1,1,95][p=30, 2, center][font=全真中細圓體][color=#000000][font=Courier New][size=2]3.51[/size][/font][/color][/font][/p][/td][td=1,1,186][p=30, 2, left][color=#000000][font=Courier New][size=2][font=全真中細圓體]Access[/font][font=全真中細圓體]的mdb資料庫[/font][/size][/font][/color][/p][/td][/tr]
[tr][td=1,1,235][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Microsoft ODBC for Oracle[/size][/font][/color][/font][/p][/td][td=1,1,95][p=30, 2, center][font=全真中細圓體][color=#000000][font=Courier New][size=2]2.73[/size][/font][/color][/font][/p][/td][td=1,1,186][p=30, 2, left][color=#000000][font=Courier New][size=2][font=全真中細圓體]Oracle[/font][font=全真中細圓體]資料庫[/font][/size][/font][/color][/p][/td][/tr]
[tr][td=1,1,235][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]SQL Server[/size][/font][/color][/font][/p][/td][td=1,1,95][p=30, 2, center][font=全真中細圓體][color=#000000][font=Courier New][size=2]3.50[/size][/font][/color][/font][/p][/td][td=1,1,186][p=30, 2, left][color=#000000][font=Courier New][size=2][font=全真中細圓體]SQL Server[/font][font=全真中細圓體]資料庫[/font][/size][/font][/color][/p][/td][/tr]
[tr][td=1,1,235][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Microsoft.jet.OLEDB[/size][/font][/color][/font][/p][/td][td=1,1,95][p=30, 2, center][font=全真中細圓體][color=#000000][font=Courier New][size=2]4.0[/size][/font][/color][/font][/p][/td][td=1,1,186][p=30, 2, left][color=#000000][font=Courier New][size=2][font=全真中細圓體]Access2000[/font][font=全真中細圓體]資料庫[/font][/size][/font][/color][/p][/td][/tr]
[tr][td=1,1,235][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]SQLoledb.1[/size][/font][/color][/font][/p][/td][td=1,1,95][p=30, 2, center][font=全真中細圓體][color=#000000][font=Courier New][size=2]1.0[/size][/font][/color][/font][/p][/td][td=1,1,186][p=30, 2, left][color=#000000][font=Courier New][size=2][font=全真中細圓體]SQL7.0[/font][font=全真中細圓體]版資料庫[/font][/size][/font][/color][/p][/td][/tr]
[/table]

如果你已經安裝了 IIS/PWS 4.0 版,則至少會有下列三種資料庫驅動程式:
[table]
[tr][td=1,1,235][p=30, 2, center][size=2][font=細明體]驅動程式名稱[/font][color=white][/color][/size][/p][/td][td=1,1,95][p=30, 2, center][size=2][font=細明體]版本[/font][color=white][/color][/size][/p][/td][td=1,1,186][p=30, 2, center][size=2][font=細明體]對應之資料庫[/font][color=white][/color][/size][/p][/td][/tr]
[tr][td=1,1,235][p=30, 2, left][font=Courier New][color=#000000][size=2]Microsoft Access driver[/size][/color][/font][/p][/td][td=1,1,95][p=30, 2, center][font=Courier New][color=#000000][size=2]3.51[/size][/color][/font][/p][/td][td=1,1,186][p=30, 2, left][color=#000000][size=2][font=Courier New]Access[/font][font=細明體]的[/font][font=Courier New]mdb[/font][font=細明體]資料庫[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,235][p=30, 2, left][font=Courier New][color=#000000][size=2]Microsoft ODBC for Oracle[/size][/color][/font][/p][/td][td=1,1,95][p=30, 2, center][font=Courier New][color=#000000][size=2]2.73[/size][/color][/font][/p][/td][td=1,1,186][p=30, 2, left][color=#000000][size=2][font=Courier New]Oracle[/font][font=細明體]資料庫[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,235][p=30, 2, left][font=Courier New][color=#000000][size=2]SQL Server[/size][/color][/font][/p][/td][td=1,1,95][p=30, 2, center][font=Courier New][color=#000000][size=2]3.50[/size][/color][/font][/p][/td][td=1,1,186][p=30, 2, left][color=#000000][size=2][font=Courier New]SQL Server[/font][font=細明體]資料庫[/font][/size][/color][/p][/td][/tr]
[/table]

那我要使用Access2000資料庫時怎麼辦?其實,你只要安裝較新的軟體後就會附有相關的最新資料庫驅動程式,要不然你也可以直接連上微軟的網站下載安裝最新的資料庫程式,如果你是使用 IIS 5.0版那您就大可放心了,因為 IIS 5.0已經提供了新版的資料庫驅動程式了。

[color=Green][size=4][b]查看已安裝的驅動程式[/b][/size][/color]
    在我們的機器上到底安裝了哪些ODBC資料庫驅動程式呢?要查看我們機器上安裝了哪一些資料庫驅動程式,首先,我們必須先打開『控制台』,然後再開啟『ODBC 資料來源』項目:
[attach]333[/attach]

在開啟『ODBC 資料來源』項目後,接著就會出現『ODBC 資料來源管理員』對話視窗,我們直接切換至『驅動程式』選項頁,就可以看到已安裝在我們機器上的資料庫驅動程式,如下圖所示,在你的機器中已安裝的資料庫驅動程式可能會比下圖多或少,數目多少要看你安裝了多少軟體而定,因為很多的軟體在我們執行安裝時常常會自動的幫我們安裝了某些ODBC資料庫驅動程式:
[attach]334[/attach]

小誌 發表於 2010-5-13 00:58

[color=darkorange][size=5][b]ADO物件群之Connection物件[/b][/size][/color]
Connection 物件是負責與資料庫實際的連結動作,建立與網路伺服器資料庫的連結是進行資料庫存取的第一步,若沒有 Connection 物件連結資料庫,則空有其他物件也沒用,那我們要如何來建立一個 Connection 物件呢?其標準格式如下所示:[code]Set 物件名 = Server.CreateObject("ADODB.Connection")[/code]上式中的『物件名』是我們自訂的,並沒有強制性的命名規定,不過,最好是取一個有意義的名字,以方便我們使用與記憶。

建立了 Connection 物件後我們緊接著就要利用這個 Connection 物件的『Open』方法來連結資料庫,下例為一個連結Access2000 格式的 test.mdb 資料庫檔案範例:
[attach]335[/attach]
1.建立一個物件名為 cn 的Connection 物件[code]Set cn = server.createobject("ADODB.Connection")[/code]2.使用變數Provide 來指定我們要使用的資料庫驅動程式,因為我們要進行連結存取的資料庫檔案類型為 Access 格式,所以使用的資料庫區對程式為:microsoft.jet.oledb.4.0[code]provider = "provider = microsoft.jet.oledb.4.0;"[/code]3.使用變數Path 來指定我們要使用的資料庫路徑與檔名,[code]path = "data source=" & server.mappath("test.mdb")[/code]我們要進行連結存取的資料庫檔案,必須指定此資料庫檔案的完整路徑名稱,所以我們必須使用『Server.MapPath』方法來取得資料庫檔案的完整路徑名稱。

4.接著使用 Open 方法來開啟我們指定資料庫檔案


[color=red]重點:上述的說明有兩個重要的提點:[/color]
1.使用 Connection 物件的『Open』方法來連結『mdb』資料庫必須給予兩個參數:provider (驅動程式名稱)、data source(資料庫來源)
2.把握『Open』兩個參數的使用,我們可將步驟234合併來寫:[code]cn.open "provider = microsoft.jet.oledb.4.0;data source=" & server.mappath("test.mdb")[/code]『;』分號為參數間的分隔符號,不可省略哦!

下表為利用Connection 物件的『Open』方法來連結『mdb』資料庫必須給予的參數:
[table]
[tr][td=1,1,231][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]參數[/size][/font][/font][/p][/td][td=1,1,230][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]設定值[/size][/font][/font][/p][/td][/tr]
[tr][td=1,1,231][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Provider[/size][/font][/color][/font][/p][/td][td=1,1,230][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]microsoft.jet.oledb.4.0[/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,231][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Data Source[/size][/font][/color][/font][/p][/td][td=1,1,230][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]實際路徑檔案名稱[/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,231][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]jet oledb:database password[/size][/font][/color][/font][/p][/td][td=1,1,230][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]密碼[/size][/font][/color][/font][/p][/td][/tr]
[/table]


[color=red][b]你在想什麼?[/b][/color]
    那個『密碼』參數對不對?我沒寫錯啦!如果我們要連結的mdb資料庫有設定密碼,那麼我們就要使用這個參數了啦!假設我們要連結開啟的資料庫有設定密碼"123",那麼我們就必須加入下面這組參數:[code]Jet OLEDB:Database Password=123[/code][color=green][size=4][b]不同的資料庫驅動程式,不同的參數[/b][/size][/color]
連結不同類型的資料庫要使用不同的對應驅動程式,沒忘記吧!不同的驅動程式當然它們的參數組合也就不同了,每一種不同驅動程式都有其特定的參數格式:
[color=red]連結Dbf資料庫 [/color]
[table]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][font=Courier New][size=2]參數[/size][/font][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][font=Courier New][size=2]設定值[/size][/font][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Provider[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]{microsoft visual foxpro driver}[/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Source DB[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]實際路徑檔案名稱[/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Source Type[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]DBF[/size][/font][/color][/font][/p][/td][/tr]
[/table]

[color=red]連結Dbc資料庫 [/color]
[table]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][font=Courier New][size=2]參數[/size][/font][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][font=Courier New][size=2]設定值[/size][/font][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Provider[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]{microsoft visual foxpro driver}[/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Source DB[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]實際路徑檔案名稱[/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Source Type[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]DBC[/size][/font][/color][/font][/p][/td][/tr]
[/table]

[color=red]連結Excel資料庫 [/color]
[table]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][font=Courier New][size=2]參數[/size][/font][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][font=Courier New][size=2]設定值[/size][/font][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Driver[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]{microsoft excel driver(*.xls)}[/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]DBQ[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]實際路徑檔案名稱[/size][/font][/color][/font][/p][/td][/tr]
[/table]

[color=red]連結Text資料庫 [/color]
[table]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][font=Courier New][size=2]參數[/size][/font][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][font=Courier New][size=2]設定值[/size][/font][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]Driver[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]{microsoft excel driver(*.txt;*cvs)}[/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,158][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]DBQ[/size][/font][/color][/font][/p][/td][td=1,1,303][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]實際路徑檔案名稱[/size][/font][/color][/font][/p][/td][/tr]
[/table]

[color=red]連結SQL資料庫 [/color]
[table=461]
[tr][td=1,1,229][p=30, 2, left][color=#000000][size=2][font=細明體]參數[/font][font=全真中細圓體][/font][/size][/color][/p][/td][td=1,1,232][p=30, 2, left][color=#000000][size=2][font=細明體]設定值[/font][font=全真中細圓體][/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,229][p=30, 2, left][font=Courier New][color=#000000][size=2]Provider[font=全真中細圓體][/font][/size][/color][/font][/p][/td][td=1,1,232][p=30, 2, left][font=Courier New][color=#000000][size=2]SQLOLEDB.1[font=全真中細圓體][/font][/size][/color][/font][/p][/td][/tr]
[tr][td=1,1,229][p=30, 2, left][font=Courier New][color=#000000][size=2]Data Source[font=全真中細圓體][/font][/size][/color][/font][/p][/td][td=1,1,232][p=30, 2, left][font=Courier New][color=#000000][size=2]server name[font=全真中細圓體][/font][/size][/color][/font][/p][/td][/tr]
[tr][td=1,1,229][p=30, 2, left][font=Courier New][color=#000000][size=2]User ID[font=全真中細圓體][/font][/size][/color][/font][/p][/td][td=1,1,232][p=30, 2, left][color=#000000][size=2][font=細明體]使用者[/font][font=Courier New]ID[font=全真中細圓體][/font][/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,229][p=30, 2, left][font=Courier New][color=#000000][size=2]Password[font=全真中細圓體][/font][/size][/color][/font][/p][/td][td=1,1,232][p=30, 2, left][color=#000000][size=2][font=細明體]密碼[/font][font=全真中細圓體][/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,229][p=30, 2, left][font=Courier New][color=#000000][size=2]Initial Catalog[font=全真中細圓體][/font][/size][/color][/font][/p][/td][td=1,1,232][p=30, 2, left][font=細明體][size=2][color=#000000]資料表名稱[/color][/size][/font][font=全真中細圓體][/font][/p][/td][/tr]
[/table]

[color=green][size=4][b]資料庫驅動程式名稱哪裡來?[/b][/size][/color]
    連結不同類型的資料庫要使用不同的對應驅動程式,這是筆者一再強調的,那麼我們如何得知資料庫驅動程式的名稱呢?先打開『控制台』,然後再開啟『ODBC 資料來源』項目,開啟『ODBC 資料來源』項目後,接著就會出現『ODBC 資料來源管理員』對話視窗,我們直接切換至『驅動程式』選項頁,注意看到『名稱』欄位,這些條列的項目就是開啟相關資料庫的驅動程式名稱!
[attach]336[/attach]
[color=red][b]注意:[/b][/color]取用這些驅動程式名稱,必須一字不漏的抄寫下來,包括英數字與符號,設置空白字元也不可放過!

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供