我們在開發項目的時候,可能會使用多種數據進行操作,本文是錯新技術頻道小編為大家介紹的ASP實現對ORACLE數據庫的操作,希望對你了解這方面知識有所幫助。
ASP(Active?Server?Pages)是微軟公司為開發互聯網應用程序所提出的工具之一,ASP與數據庫的聯接一般通過ADO(Activex?Data?Object)來實現的,就象《計算機世界》2000年3月20日的《用ASP對SQL?Server數據庫操作》文章介紹的一樣,ADO可以完全支持Microsoft?SQL?Server?,但對應用更加廣泛、機制更加復雜的ORACLE?數據庫服務就有一些困難,如果想作一些簡單的查詢功能,ADO是足夠的,如要想更好地發揮ORACLE數據庫特有的功能,如STORED?PROCEDURE,STORED?FUNCTION等就要采取利用ASP存取ORACLE?數據庫服務的另一個強有力工具---Oracle?Object?for?OLE中的ORACLE對象服務器(The?Oracle?Object?Server)。本文從一個實例說明如何在ASP中使用ORACLE對象服務器提供的控件來實現對ORACLE數據庫的存取,并就如何維護網絡數據庫的完整性約束問題進行一些討論。?
----?Oracle?Object?for?OLE是ORACLE公司為了客戶端存取數據庫所發展的一個很需要的產品,它以Windows?95/98/NT?為基礎供所有的與OLE?兼容的應用程序與程序語言存取ORACLE數據庫,如ASP、Visual?Basic?excess97等?,Oracle?Object?for?OLE包含了ORACLE對象服務器(The?Oracle?Object?Server)、ORCLE?數據控制項(The?Oracle?Data?Control)與ORACLE?對象類程序庫(The?Oracle?Objects?for?OLE?C++?Class?Library)等三項產品。?
----?與ADO相比,ORACLE對象服務器是專用于ORACLE數據庫應用程序開發的產品,它有以下優點:?
----?(1)?與數據庫服務器的連接的運行效率好。因為ADO是通過ODBC來連接數據庫服務器的,而ORACLE對象服務器是通過ORACLE的SQL*NET來連接數據庫服務器的?
----?(2)?能更好地發揮ORACLE數據庫的特有功能。如STORED?PROCEDURE,STORED?FUNCTION、PACKAGE或Multiple?Cursor。?
----?本例是一個通訊錄的查詢、錄入的小程序,用戶可以通過瀏覽器對通訊錄表進行查詢,也可把自己的信息輸入,供別人查詢。?
----?通訊錄表的結構如下:?
Name????????????????????????????Null?????Type
-------------------------------?--------?----
NAME????????????????????????????NOT?NULL?CHAR(8)
ADDRESS??????????????????????????????????CHAR(20)
PHONE????????????????????????????????????CHAR(20)
EMAIL????????????????????????????????????VARCHAR2(30)
----?首先:進行環境配置:?
----?在WEB服務器上安裝以下軟件并進行配置:?
----?(1)基本的WEB?服務器(WEB?SERVER)與ASP等軟件?
----?(2)Oracle?Object?for?OLE2.x?
----?(3)SQL*Net?Client?或?Oracle?Net8?Client?8,安裝之后,用Sql*Net?Easy?Configuration建立數據庫別名(Database?Alias),為ASP連接到數據庫所用的別名。?
----?二.功能實現?
----?(1)查詢:用ASP?取數據庫通訊錄表(TSB1)的數據,將數據顯示在屏幕上。查詢的關鍵在于確定與數據庫的連接成功與否,ORACLE對象服務器本身有錯誤控制機制可以報出數據庫連接方面的錯誤,具體的程序如下:?
<?HTML?>
????<?tile?>??查詢程序?<?/title?>
<?BODY?>
<?%
on?error?resume?next
'連接數據庫
set?orasession=createobject
("OracleInprocServer.XOraSession")
set?oradatabase=orasession.
dbopendatabase("axp03","scott/tiger",0)
'出錯處理
if?err.number?>0?then
response.write"<?h4?>asp?錯誤控制?<?/h4?>"
response.write"asp?錯誤來源:"&err.source?&"<?br?>"
response.write"asp?錯誤代碼:"&err.number&"<?br?>"
response.write"asp?錯誤說明:"&err.description&"<?br?>"
err.clear
response.write"<?h4?>ORACLE?OLE?錯誤控制<?/h4?>"
response.write"ORACLE?錯誤代碼:
"&OraSession.LastServerErr&"<?br?>"
response.write"ORACLE?錯誤說明:
"&OraSession.LastServerErrText&"<?br?>"
else?
'查詢
sql="select?*?from?tsb1"
set?oradynaset=oradatabase.dbcreatedynaset(sql,0)
response.write"<?h3?>result<?/h3?>"
response.write"<?table?border=5?><?tr?>"
for?i=0?to?oradynaset.fields.count-1
response.write"<?td?>"
response.write?oradynaset.fields(i).name?&?"?"
response.write"<?/td?>"
next
response.write"<?/tr?>"
do?until?oradynaset.eof
response.write"<?tr?>"
for?i=0?to?oradynaset.fields.count-1
response.write"<?td?>"
response.write?oradynaset.fields(i).value?
response.write"<?/td?>"
next?
response.write"<?/tr?>"
oradynaset.dbmovenext
loop
response.write"<?/table?>"
'關閉數據庫
oradatabase.close
set?orasession=nothing
end?if
%?>
<?/body?>
<?/html?>
----?下面是程序的查詢結果圖面:?
通訊錄?
NAME?ADDRESS?PHONE?EMAIL??
張玲?馬鞍山市湖北路5號?0555-2887765?zhangl@mial.magang.com.cn?
林向?馬鞍山市湖南路9號??0555-2223856?lingx@mail.magang.com.cn?
鄧國虹?采礦路子4幢504號?0555-2474748?denggh@263.net?
李城?青島海洋大學7幢507?0464-32456678?licheng@263.net?
王國在?采礦小區7幢807號?0555-3445454?wang@mail.amgang.com.cn?
丁剛?紅旗南路17幢405號?0555-2883721?dingg@mail.magang.com.cn?
全在保?江西路子7幢607號?0554-4566777?quzab@mial.ccac.com?
----?(2)插入自己的信息:用ASP將用戶在瀏覽器上提供的數據插入到數據庫通訊錄表(TSB1)中,由ORACLE數據庫有一套完整性約束機制,所以插入過程不光是簡單地把數據插入到表中,還要做完整性約束的檢查,不合要求的數據拒絕插入,如果在程序中不考慮處理,運行時,就會因數據庫服務器報錯而中斷程序。而ASP中的ERR對象可以報出錯誤來源、錯誤代碼、錯誤說明等,并能把程序引向錯誤處理。?
----?以下是程序,一個是insert.htm,?是一個輸入界面,供用戶輸入自己的信息,一個是insert.asp,負責將用戶輸入信息插入數據庫,并進行錯誤檢查。?
Insert.htm:
<?html?>
<?head?>
<?meta?http-equiv="Content-Language"
content="zh-cn"?>
<?meta?http-equiv="Content-Type"
content="text/html;?charset=gb2312"?>
<?meta?name="GENERATOR"?content=
"Microsoft?FrontPage?4.0"?>
<?meta?name="ProgId"?content=
"FrontPage.Editor.Document"?>
<?title?>請留下你的信息<?/title?>
<?/head?>
<?body?>
<?p?align="center"?>請輸入你的信息<?/p?>
<?form?method="post"?action="insert.asp"?>
姓 名:
<?input?type="text"?name="name"?size="8"?>?<?br?>?
地 址:
<?input?type="text"?name="address"?size="20"?>?<?br?>?
電 話:
<?input?type="text"?name="phone"?size="20"?>?<?br?>?
E-MAIL:<?input?type="text"?name="email"?size="20"?>?<?br?>?
<?input?type="submit"??value="確定"?>?
<?input?type="reset"??value="取消"?><?br?>?
<?/form?>?
<?/body?>?
<?/html?>
----?下面是用戶輸入界面:?
請輸入你的信息
姓 名:??
地 址:??
電 話:??
E-MAIL:??
?????Insert.asp:
<?HTML?>
<?BODY?>
<?%
'連接數據庫
set?orasession=createobject
("OracleInprocServer.XOraSession")
set?oradatabase=orasession.
dbopendatabase("axp03","scott/tiger",0)
'把用戶插入信息變成SQL語句
sql="insert?into?tsb1?values
("?&chr(39)&request("name")&chr(39)?&","_
&chr(39)&request("ADDRESS")&chr(39)&","_
&chr(39)?&?request("phone")&chr(39)?&","_
&chr(39)&request("EMAIL")&chr(39)&")"
'運行SQL插入語句
oradatabase.dbEXECUTESQL(sql)
'檢查是否有違反完整性約束錯誤
IF?ERR.NUMBER?>0?THEN
response.write"<?h4?>asp?錯誤控制?<?/h4?>"
response.write"asp?錯誤來源:"&err.source?&"<?br?>"
response.write"asp?錯誤代碼:"&err.number&"<?br?>"
response.write"asp?錯誤說明:"&err.description&"<?br?>"
ELSE?
'插入完成,返回
response.write"插入完成,<?a?href=insert.htm??>?返回。。。<?/a?>"
end?if
%?>
<?/body?>
<?/html?>
上文是錯新技術頻道小編帶給大家的ASP實現對ORACLE數據庫的操作,如果你已經學會這些方法了,那么趕快去操作試試吧!
新聞熱點
疑難解答