ADO如何透過ODBC存取各種資料庫呢?

ADO如何透過ODBC存取各種資料庫呢?

本單元介紹如何透過ODBC存取以下各種資料庫:

存取Access資料庫

ADO如何透過ODBC存取如下的Access資料庫呢?

若要透過ODBC存取Access資料庫,首先直接於ASP程式碼中指定所要連結的資料庫,使用「Server.CreateObject("ADODB.Connection")」建立連線的物件後,於Driver設定為Access ODBC驅動程式名稱,使用「Open」直接連結到待存取查詢資料庫。

ASP程式碼如下:

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

cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\ntopsamp\ntopsamp.mdb"

其中於DBQ直接設定Access資料庫的真實路徑檔案名稱。您可以使用Server.MapPath("資料庫檔案名稱") 以取得資料庫的真實路徑檔案如下:

cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("ntopsamp.mdb")

接著設定待執行的SQL指令為「SELECT * FROM 著作」以查詢所有的資料,將查詢的資料放置於所定義rsRecordset當中,ASP程式碼如下:

Set rs = Server.CreateObject("ADODB.Recordset")

SqlStr = "SELECT * FROM 著作"

rs.Open SqlStr,cn,1,1

最後使用Recordset屬性和方法與HTML碼配合,以顯示執行的結果,ASP程式碼如下:

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0><TR>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">書名</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">出版</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">圖片</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#008080"><FONT COLOR="#FFFFFF">簡介</FONT></TD>

<% Do while not rs.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs("書名") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs("出版") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs("圖片") %></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs("簡介") %></TD>

</TR>

<%

rs.MoveNext

Loop

rs.Close

Set cn = Nothing

%>

</TABLE>

其中Do while not rs.EOF的迴圈將rsRecordset當中的資料一一顯示出來,由rs(“欄位名稱”) ,讀取此筆資料指定欄位的資料,顯示後由rs.MoveNext,將指標移到下一筆。

以上的 ASP程式碼rs41.asp,於用戶端使用瀏覽器,瀏覽執行的結果,顯示資料庫內所有的資料。

SQL Server

ADO如何透過ODBC存取如下的SQL Server資料庫呢?

請注意,若要執行本單元的SQL Server範例rs42.asp,請先參考「如何轉換Access資料到SQL Server呢?」單元,新建立一個叫做NtopSampDatabase,並將Access範例資料NtopSamp.mdb轉換到SQL Server

若要透過ODBC存取SQL Server資料庫,首先直接於ASP程式碼中指定所要連結的資料庫,使用「Server.CreateObject("ADODB.Connection")」建立連線的物件後,於Driver設定為SQL Server ODBC驅動程式名稱,使用「Open」直接連結到待存取查詢資料庫,ASP程式碼如下:

<%

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

cn.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"

Set rs = Server.CreateObject("ADODB.Recordset")

SqlStr = "SELECT * FROM 著作"

rs.Open SqlStr,cn,1,1

%>

ASP程式碼中Server=…當中設定資料庫電腦的IP位址或為local

接著設定待執行的SQL指令為「SELECT * FROM 著作」以查詢所有的資料,將查詢的資料放置於所定義rsRecordset當中,最後使用Recordset屬性和方法與HTML碼配合,以顯示執行的結果,相關的ASP程式碼與執行結果與上例Access資料庫相同,請參考範例rs42.asp

Excel

ADO如何透過ODBC存取如下的Excel資料呢?

若要透過ODBC存取Excel資料,首先直接於ASP程式碼中指定所要連結的資料庫,使用「Server.CreateObject("ADODB.Connection")」建立連線的物件後,於Driver設定為Excel ODBC驅動程式名稱,於DBQ直接設定Excel資料的真實路徑檔案名稱,可以使用Server.MapPath("著作.xls") 以取得Excel檔的真實路徑檔案,使用「Open」直接連結到待存取查詢資料庫,ASP程式碼如下:

<%

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

cn.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & Server.MapPath("著作.xls")

Set rs = Server.CreateObject("ADODB.Recordset")

SqlStr = "SELECT * FROM 著作"

rs.Open SqlStr,cn,1,1

%>

接著設定待執行的SQL指令為「SELECT * FROM 著作」以查詢所有的資料,將查詢的資料放置於所定義rsRecordset當中,最後使用Recordset屬性和方法與HTML碼配合,以顯示執行的結果,相關的ASP程式碼與執行結果與上例Access資料庫相同,請參考範例rs43.asp

 

請注意,ASP程式碼對Excel資料可以做查詢、新增、和修改,但是無法做刪除的動作。

dBase

ADO如何透過ODBC存取dBase資料庫的資料呢?

若要透過ODBC存取dBase資料庫的資料,首先直接於ASP程式碼中指定所要連結的資料庫,使用「Server.CreateObject("ADODB.Connection")」建立連線的物件後,於Driver設定為dBase ODBC驅動程式名稱,於DBQ直接設定dBase資料庫檔案的真實路徑譬如c:\ntopsamp\adoc:\ ntopsamp\ado\,使用「Open」直接連結到待存取查詢資料庫,ASP程式碼如下:

<% Set cn = Server.CreateObject("ADODB.Connection")

cn.Open "Driver={ Microsoft dBase Driver (*.dbf)}; DBQ=c:\ntopsamp\ado"

Set rs = Server.CreateObject("ADODB.Recordset")

SqlStr = "SELECT * FROM 著作"

rs.Open SqlStr,cn,1,1 %>

 

請注意DBQ不能夠包括檔案名稱,否則無法執行,

由於dBase並沒有資料表的觀念,SQL指令所指的資料表名稱即為dBase檔案名稱,譬如「著作.dbf」,其資料表名稱為「著作」。

接著設定待執行的SQL指令為「SELECT * FROM 著作」以查詢所有的資料,將查詢的資料放置於所定義rsRecordset當中,您也可以使用「rs.Open "著作",cn,1,1 」來代替最後兩行程式碼, 最後使用Recordset屬性和方法與HTML碼配合,以顯示執行的結果,相關的ASP程式碼與執行結果與上例Access資料庫相同,請參考範例rs44.asp

Text

ADO如何透過ODBC存取如下的Text文字檔案的資料呢?

若要透過ODBC存取Text文字檔案的資料,首先直接於ASP程式碼中指定所要連結的資料庫,使用「Server.CreateObject("ADODB.Connection")」建立連線的物件後,於Driver設定為Text ODBC驅動程式名稱,於DBQ直接設定Text文字檔案的真實路徑譬如c:\ntopsamp\adoc:\ ntopsamp\ado\,請注意不包括檔案名稱,否則無法執行,使用「Open」直接連結到待存取查詢資料庫,ASP程式碼如下:

 

<%

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

cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\ ntopsamp\ado"

Set rs = Server.CreateObject("ADODB.Recordset")

rs.Open "著作",cn,1,1

%>

 

請注意DBQ不能夠包括檔案名稱,否則無法執行,

由於Text文字檔案並沒有資料表的觀念,SQL指令所指的資料表名稱即為Text文字檔案名稱,譬如「著作.txt」,其資料表名稱為「著作」。

接著設定待執行的SQL指令為「SELECT * FROM 著作」以查詢所有的資料,將查詢的資料放置於所定義rsRecordset當中,最後使用Recordset屬性和方法與HTML碼配合,以顯示執行的結果,相關的ASP程式碼與執行結果與上例Access資料庫相同,請參考範例rs45.asp

 

請注意,ASP程式碼對Text文字檔案的資料可以做查詢、新增、和修改,但是無法做刪除的動作。