?? 22-2.cfm.htm
字號(hào):
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>使用Activex數(shù)據(jù)對(duì)象</TITLE>
</HEAD>
<BODY>
<B><FONT FACE="宋體" LANG="ZH-CN" SIZE=5><P ALIGN="JUSTIFY">使用Activex數(shù)據(jù)對(duì)象</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">這一節(jié)將一步一步地引導(dǎo)你在你的ASP網(wǎng)頁中使用ADO。首先你將學(xué)習(xí)如何配置你的服務(wù)器以使用ADO。接著,在下一節(jié)提供了一個(gè)簡單的例子,演示如何使用ADO對(duì)數(shù)據(jù)庫進(jìn)行讀寫操作。最后,考慮到你會(huì)遇到一些問題,有一節(jié)內(nèi)容講述ADO的調(diào)試。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">配置服務(wù)器以使用Activex數(shù)據(jù)對(duì)象</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">本書假定你是在Microsoft SQL Sever中使用ADO。在繼續(xù)下面的內(nèi)容之前,Microsoft SQL Sever必須與你的Web服務(wù)器安裝在同一臺(tái)機(jī)器上,或者兩臺(tái)機(jī)器在同一個(gè)網(wǎng)絡(luò)中。要了解安裝和配置Microsoft SQL Sever的詳細(xì)內(nèi)容,請參閱第三章“安裝和使用SQL Sever”。</P>
<P ALIGN="JUSTIFY">在能夠使用ADO之前,你必須先建立一個(gè)數(shù)據(jù)源。數(shù)據(jù)源包含了如何與一個(gè)數(shù)據(jù)提供者進(jìn)行連接的信息。在這種情況下,你將使用數(shù)據(jù)源與Microsoft SQL Sever建立連接。數(shù)據(jù)源共有三種類型:你可以建立用戶數(shù)據(jù)源,系統(tǒng)數(shù)據(jù)源,或者文件數(shù)據(jù)源。當(dāng)你要建立一個(gè)與Web服務(wù)器一起使用的數(shù)據(jù)源時(shí),你應(yīng)該建立一個(gè)文件數(shù)據(jù)源。建立文件數(shù)據(jù)源的好處是連接信息存儲(chǔ)在一個(gè)實(shí)際的文件中。不止一個(gè)用戶可以訪問這個(gè)文件。而且,如果你需要把Web應(yīng)用程序從一種Web服務(wù)器移植到另一種Web服務(wù)器上,你只需要移植這個(gè)文件即可。</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">注意</P>
</B><P ALIGN="JUSTIFY">在建立一個(gè)數(shù)據(jù)源之前,應(yīng)確保SQL Sever正在運(yùn)行。通過MS SQL Sever程序組中的SQL服務(wù)管理器可以確定SQL服務(wù)是否在運(yùn)行。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">按如下步驟可以建立一個(gè)新的文件數(shù)據(jù)源:</P>
<OL>
<P ALIGN="JUSTIFY"><LI>打開WINDOWS NT SEVER的控制面板(選擇Start|Setting|Control Panel)。</LI></P>
<P ALIGN="JUSTIFY"><LI>單擊ODBC的圖標(biāo)。</LI></P>
<P ALIGN="JUSTIFY"><LI>單擊標(biāo)簽File DSN。</LI></P>
<P ALIGN="JUSTIFY"><LI>單擊按鈕Add,出現(xiàn)Create New Data Source對(duì)話框。</LI></P>
<P ALIGN="JUSTIFY"><LI>在對(duì)話框中,選擇SQL Sever驅(qū)動(dòng)程序并單擊按鈕Next,出現(xiàn)Create a New Data Source對(duì)話框。</LI></P>
<P ALIGN="JUSTIFY"><LI>輸入你所建的數(shù)據(jù)源的名字。例如,輸入mydata.dsn。單擊Next,再單擊Finish,則wizard程序Create a New Data Source to SQL Sever會(huì)被啟動(dòng)(見圖22.1)。</LI></P>
<P ALIGN="JUSTIFY"><LI>在文本框Description中,輸入一個(gè)描述,如My Data Source。在文本框Sever中,輸入安裝了SQL Sever的服務(wù)器的名字。(如果SQL Sever與Web服務(wù)器安裝在同一臺(tái)機(jī)器上,你可以輸入Local)單擊Next。</LI></P>
<P ALIGN="JUSTIFY"><LI>一系列對(duì)話框出現(xiàn),要求你定制數(shù)據(jù)源的各種屬性。你要指定一個(gè)缺省數(shù)據(jù)庫。選擇你的表所在的數(shù)據(jù)庫作為缺省數(shù)據(jù)庫。讓其它的選項(xiàng)保持其缺省值,單擊Next,關(guān)閉所有的對(duì)話框。</LI></P>
<P ALIGN="JUSTIFY"><LI><IMG SRC="Image117.gif" tppabs="http://210.74.168.175/guide/asp/part22/Image117.gif" WIDTH=543 HEIGHT=304>最后,給你一個(gè)測試新數(shù)據(jù)源的機(jī)會(huì)。如果測試成功了,單擊OK,添加這個(gè)新數(shù)據(jù)源。</LI></P></OL>
<P ALIGN="JUSTIFY"> </P><DIR>
<B><P ALIGN="JUSTIFY"> 圖22.1 用SQL Server Wizard創(chuàng)建一個(gè)新數(shù)據(jù)源</P></DIR>
</B><P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 你已經(jīng)建立了一個(gè)名為mydata.dsn的新數(shù)據(jù)源。你可以使用這個(gè)數(shù)據(jù)源連接到Microsoft SQL Sever.(下一節(jié)將介紹如何進(jìn)行連接)</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">使用Activex數(shù)據(jù)對(duì)象對(duì)數(shù)據(jù)庫進(jìn)行讀寫</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">這一節(jié)給出了一個(gè)如何使用ADO對(duì)Microsoft SQL Sever數(shù)據(jù)庫進(jìn)行讀寫操作的例子。舉這個(gè)例子有兩個(gè)目的:它演示了從ASP網(wǎng)頁中訪問Microsoft SQL Sever的基本方法,而且你可以用這個(gè)例子檢測服務(wù)器的配置是否正確。</P>
<P ALIGN="JUSTIFY">表22.1所示的網(wǎng)頁把文本“Hello World!”插入一個(gè)表中,然后,從表中取出這個(gè)文本并顯示在瀏覽器中。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">表22.1 Hello World!</P>
<P ALIGN="JUSTIFY"><HTML><HEAD><TITLE> ADO Example </TITLE></HEAD><BODY><%Set MyConn=Server.CreateObject("ADODB.Connection")MyConn.Open "FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn"MyConn.Execute "INSERT MyTable (MyColumn) VALUES ('Hello World!')"Set RS=MyConn.Execute("SELECT * FROM MyTable")Response.Write(RS("MyColumn"))MyConn.Close%></BODY></HTML></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在使用這個(gè)例子之前,你需要建立一個(gè)名為Mytable的表。你可以使用ISQL/w來創(chuàng)建它。啟動(dòng)這個(gè)程序,選擇你的缺省數(shù)據(jù)庫,然后執(zhí)行如下的SQL 語句:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">CREATE TABLE mytable (mycolumn VARCHAR(255))</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">注意</P>
</B><P ALIGN="JUSTIFY">要了解建立表的更多信息,請參見第10章“SQL基礎(chǔ)”。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">這個(gè)網(wǎng)頁的第一行創(chuàng)建了連接對(duì)象的一個(gè)實(shí)例。接下來調(diào)用連接對(duì)象的open方法,打開了一個(gè)對(duì)數(shù)據(jù)庫的連接。在open方法中用到了你在上一節(jié)所建立的數(shù)據(jù)源,以建立對(duì)數(shù)據(jù)庫的連接。(用你的計(jì)算機(jī)中的實(shí)際路徑代替這個(gè)腳本中文件數(shù)據(jù)源的路徑。)</P>
<P ALIGN="JUSTIFY">一旦打開了一個(gè)連接,你就可以用這個(gè)連接執(zhí)行SQL語句。在這個(gè)例子中,用Execute方法執(zhí)行了兩個(gè)SQL語句。首先,用SQL INSERT語句把字符串“Hello World!”輸入到了數(shù)據(jù)庫中。然后用SQL SELECT語句從表中取出了這個(gè)字符串。</P>
<P ALIGN="JUSTIFY">如果你的系統(tǒng)配置正確,字符串“Hello World!”將會(huì)顯示在瀏覽器窗口中。該字符串先被插入數(shù)據(jù)庫,又被取出并顯示。如果有什么不正常,請參看下一節(jié)。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">調(diào)試Activex數(shù)據(jù)對(duì)象</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">如果你用ADO訪問Microsoft SQL Sever時(shí)出現(xiàn)問題,這一節(jié)將對(duì)你有所幫助。許多原因會(huì)導(dǎo)致上一節(jié)中所示的ASP網(wǎng)頁執(zhí)行失敗。下面列出了你通常會(huì)遇到的一些問題的癥狀以及可能的原因:</P>
<P ALIGN="JUSTIFY"> </P>
<UL>
<B><P ALIGN="JUSTIFY"><LI>癥狀</B>:出現(xiàn)錯(cuò)誤信息 Unable to create file buffer.</LI></P></UL>
<DIR>
<DIR>
<B><P ALIGN="JUSTIFY">原因</B>:文件數(shù)據(jù)源不正確。如果文件數(shù)據(jù)源的路徑或名字有誤,或者該數(shù)據(jù)源不存在,你就會(huì)收到這個(gè)錯(cuò)誤信息。你應(yīng)確保網(wǎng)頁中open方法所使用的文件數(shù)據(jù)源的路徑與你計(jì)算機(jī)中的實(shí)際路徑相同。</P>
<P ALIGN="JUSTIFY"> </P></DIR>
</DIR>
<UL>
<B><P ALIGN="JUSTIFY"><LI>癥狀</B>:出現(xiàn)錯(cuò)誤信息 Invalid object name </FONT><FONT FACE="Playbill,Courier New" SIZE=3>‘</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>mytablw</FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</LI></P></UL>
<DIR>
<DIR>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">原因1</B>:數(shù)據(jù)庫中不存在表</FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>。按照上一節(jié)中所講的方法用ISQL/w創(chuàng)建這個(gè)表。</P>
<B><P ALIGN="JUSTIFY">原因2</B>:表mytable不在缺省數(shù)據(jù)庫中。你需要指定一個(gè)缺省數(shù)據(jù)庫。選擇Start|Settings|Control Panel。單擊ODBC圖標(biāo),然后單擊File DSN標(biāo)簽。選擇你的文件數(shù)據(jù)源的名字,單擊Configure,再單擊Options。在對(duì)話框中指定你的確省數(shù)據(jù)庫的名字。</P>
<P ALIGN="JUSTIFY"> </P></DIR>
</DIR>
<UL>
<B><P ALIGN="JUSTIFY"><LI>癥狀</B>:出現(xiàn)錯(cuò)誤信息 The sever appears to be not available</LI></P></UL>
<DIR>
<DIR>
<B><P ALIGN="JUSTIFY">原因</B>:SQL Sever沒有運(yùn)行。從Microsoft SQL Sever程序組中選擇SQL Sevice Manager。選擇MSSQLSEVER并單擊綠燈。</P>
<P ALIGN="JUSTIFY"> </P></DIR>
</DIR>
<UL>
<B><P ALIGN="JUSTIFY"><LI>癥狀</B>:出現(xiàn)錯(cuò)誤信息 Login failed。</LI></P></UL>
<DIR>
<DIR>
<B><P ALIGN="JUSTIFY">原因</B>:你沒有使用WINDOWS NT確認(rèn)模式。建立數(shù)據(jù)源時(shí)輸入了錯(cuò)誤的帳號(hào)和口令。選擇Start|Settings|Control Panel。單擊ODBC圖標(biāo),然后單擊File DSN標(biāo)簽。選擇你的文件數(shù)據(jù)源的名字并單擊Configure。你可以選擇Use Trusted Connection,或輸入合法的帳號(hào)和口令。</P>
<P ALIGN="JUSTIFY"> </P></DIR>
</DIR>
<UL>
<B><P ALIGN="JUSTIFY"><LI>癥狀</B>:出現(xiàn)錯(cuò)誤信息 INSERT permission denied on object mytable 或</LI></P></UL>
<DIR>
<P ALIGN="JUSTIFY"> SELECT permission denied on objict mytable。</P><DIR>
<B><P ALIGN="JUSTIFY">原因</B>:建立數(shù)據(jù)源時(shí)指定的帳號(hào)沒有訪問表mytable的足夠的權(quán)限。你需要改變文件數(shù) 據(jù)源的注冊帳號(hào),或者給該用戶或用戶組提供更多的權(quán)限。</P>
<P ALIGN="JUSTIFY"> </P></DIR>
</DIR>
<P ALIGN="JUSTIFY"> 要提供對(duì)一個(gè)表的更多權(quán)限,從Microsoft SQL Sever程序組中啟動(dòng)SQL事務(wù)管理器,找到表mytable并用右鍵點(diǎn)擊它。選擇Permissions。現(xiàn)在你可以為不同的用戶或用戶組設(shè)置對(duì)這個(gè)表的操作權(quán)限。</P></FONT></BODY>
</HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -