在Oracle数据库上构建NET应用程序理论课

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《Oracle数据库应用》理论课在Oracle数据库上构建.NET应用程序本章技能目标掌握在NET环境访问Oracle数据库1.环境配置开始使用VisualStudio.NET进行应用程序开发前,请先确认客户端连通性。如果您在VS.NET所在的计算机上使用SQL*Plus能够与Oracle连接,那么证明已经正确地安装和配置了Oracle客户端软件。要完成在VS中访问Oracle数据库的话,你必须先将Oracle数据库配置好,常见的一些配置主要是对$oracleHome\network\ADMIN这个目录下的两个文件的配置。tnsnames.ora和listener.ora。这两个文件的配置至关重要,其中listener.ora是用户指定监听服务的一些信息的,如果这个文件设置不正确的话,将有可能导致监听服务无法启动。listener.ora文件如下所示:SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=PLSExtProc)(ORACLE_HOME=E:\oracle\product\10.2.0\db_1)(PROGRAM=extproc)))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cs)(PORT=1521))))主要是要将HOST设置好。tnsnames.ora文件如下所示:ACCP=(DESCRIPTION=在Oracle数据库上构建.NET应用程序-2-2(ADDRESS=(PROTOCOL=TCP)(HOST=cs)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=accp)))EXTPROC_CONNECTION_DATA=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))(CONNECT_DATA=(SID=PLSExtProc)(PRESENTATION=RO)))ACCP1=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cs)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=accp1)))HOST用来指定Oracle服务器所在的主机名或者IP地址,而SERVICE_NAME则指定全局数据库名。一般来说,经过下面两个步骤就可以判断出您的上面的两个文件是否设置正确了,首先是您设置好上面的两个文件以后,您就重新启动监听服务。如果监听服务能够正常启动的话,说明配置文件listener.ora配置基本正确,而后的话,您可以通过tnsping数据库名来判断tnsnames.ora的配置是否正确,比如我们Oracle数据库的全局数据库名为ACCP。下面就通过tnspingACCP来判断tnsnames.ora的配置是否正确。在Oracle数据库上构建.NET应用程序-3-3如果得到上面的类似结果,则说明这个配置文件时正确的。2.数据提供程序简介随着Microsoft的.NET框架的逐渐流行,许多开发人员迫切想了解关于将.NET应用程序与Oracle集成的最好的方式的信息,不仅在基本的连通性方面,还包括与使用VisualStudio.NET(VS.NET)进行有效的应用程序开发的关系。Oracle、Microsoft和第三方供应商都提供了针对Oracle产品进行了优化的数据供应程序。Oracle和Microsoft免费提供其Oracle数据供应程序。访问Oracle的操作有些类似于对SqlServer的操作。对Oracle的访问有以下几种数据提供程序。Microsoft.NETOracle提供程序OLEDB.NET提供程序ODBC.NET数据提供程序Oracle的ODP.NET提供程序其中第四种,必须先安装由Oracle提供的ODP.NET才能够实现访问。下面我们重点介绍第一和第四种。3.Microsoft.NETOracle提供程序现在就来看前面的第一张种方式使用Microsoft.NETOracle提供程序。在VS中打开服务器资源管理器,如下图:在Oracle数据库上构建.NET应用程序-4-4添加一个连接,如下图所示。更改“数据源”,使用”用户Oracle的.NETFramework数据提供程序。在Oracle数据库上构建.NET应用程序-5-5指定服务器名,如ACCP,输入用户名和密码,然后测试连接。如果测试连接成功,就可以看到如下图所示,关于数据库的相关信息。在Oracle数据库上构建.NET应用程序-6-6下面就来看一个做一个Demo来对上面的设置进行一个测试。首先创建一个解决方案ORACLETEST,在该解决方案下创建一个项目NETORACLE。然后打开数据源视图,添加一个“新数据源”,如下图:在Oracle数据库上构建.NET应用程序-7-7在Oracle数据库上构建.NET应用程序-8-8添加数据库,下一步。在Oracle数据库上构建.NET应用程序-9-9选择上面我们刚刚创建的连接。下一步。在Oracle数据库上构建.NET应用程序-10-10在Oracle数据库上构建.NET应用程序-11-11数据源视图结果如下:使用鼠标拖动EMP到任意一个窗体。结果如下:在Oracle数据库上构建.NET应用程序-12-12运行程序,完成了数据库中SCOTT用户的EMP表的数据显示。上述的操作步骤完成了一个简单的数据显示的操作,看看我们的项目会是如何?项目文件自动导入了System.Data.OracleClient命名空间。和app.config配置文件。在Oracle数据库上构建.NET应用程序-13-13配置文件包含了连接字符串。上面的步骤和我们访问SQLSEVER的方式基本上是相同的。只是导入了System.Data.OracleClient命名空间。在此名字空间中,主要包含四个核心类,它们分别是:OracleConnection、OracleCommand、OracleDataReader、OracleDataAdapter。可使用System.Data.OracleClient命名空间中类的子集来执行Oracle存储过程和函数。其具体使用方法几乎和SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter是一模一样的。还可使用System.Data.OracleClient命名空间中类的子集来执行Oracle存储过程和函数。下表对这些类进行了说明:类说明OracleCommand针对Oracle数据库执行的存储过程的SQL语句。OracleConnection打开的数据库连接。OracleParameterOracleCommand的参数,也可能是它到DataColumn的映射。OracleParameterCollectionOracleParameter对象的集合。OracleTypeOracle数据类型和结构的枚举。在Oracle数据库上构建.NET应用程序-14-143.1数据库的访问操作。下面我们就使用System.Data.OracleClient命名空间的核心类来完成数据库的增删改查以及调用存储过程或函数的相关操作。我们使用如下表Student完成我们的操作,和我们的SQLSERVER课程中的相同。整型stuId自增1字符型stuName整型age准备工作:首先我们创建一个表空间Student。第二创建一个用户Student。并分配权限。createuserStudentidentifiedbycsdefaulttablespaceSTUDENTtemporarytablespaceTEMP;grantdbatoSTUDENT;第三创建表Student--Createtablecreatetablestudent.Student(stuidnumber,stunamevarchar2(30),agenumber)tablespaceSTUDENTstorage(initial64Kminextents1maxextentsunlimited);--Create/Recreateprimary,uniqueandforeignkeyconstraintsaltertablestudent.StudentaddconstraintstuPPprimarykey(STUID);第四创建一个序列createsequencestuSeq;第五创建一个触发器,实现自动生成stuID列的值,并禁止UPADTE表的stuID列CREATEORREPLACETRIGGERstu_TRGBEFOREINSERTORUPDATEOFstuIDONStudentFOREACHROWBEGINIFINSERTINGTHENSELECTstuSeq.NEXTVALINTO:NEW.stuIDFROMDUAL;ELSERAISE_APPLICATION_ERROR(-20020,'不允许更新stuID值!');在Oracle数据库上构建.NET应用程序-15-15ENDIF;END;如果不使用触发器的话,在插入操作中需要使用stuSeq.NEXTVAL,设置自增字段的值。为方便操作以及和SQLSERVER对照。我们下面的案例使用触发器生成自增字段的值。第六模拟插入数据insertintostudent(stuName,age)values('cs1',30);commit;或在不使用触发器的情况下。insertintostudent(stuID,stuName,age)values(stuSeq.NEXTVAL,'cs1',30);commit;3.1.1程序运行界面本次讲座中,我们使用上面的程序测试有关使用Microsoft.NETOracle提供程序数据操作的业务。可以查看下发的源代码。3.1.2连接数据库的代码将System.Data.OracleClient.dll(用于Oracle的Microsoft.NET框架数据提供程序)的引用添加到项目中。使用using指令导入OracleClient类中的类型。usingSystem.Data.OracleClient;在Oracle数据库上构建.NET应用程序-16-16下面是使用OracleConnection类创建数据库连接对象。//数据库连接字符串privatestaticstringconnString=DataSource=ACCP;UserID=Student;Password=cs;//数据库连接Connection对象privatestaticOracleConnectionconnection=newOracleConnection(connString);3.1.3删除数据代码:1:使用格式化字符串方式生成SQL语句。publicintDeleteStudent1(intstuID){intresult=0;//构建删除的sql语句stringsql=string.Format(DeleteFromStudentWherestuID={0},stuID);//定义command对象OracleCommandcommand=newOracleCommand(sql,connection);try{connection.Open();result=command.ExecuteNonQuery();//执行命令//根据操作结果给出提示信息if(result==1){MessageBox.Show(删除成功!,操作提示,MessageBoxButtons.OK,MessageBoxIcon.Information);}}catch(Exceptionex){Console.WriteLi

1 / 51
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功