-- 作者:admin
-- 发布时间:11/9/2004 2:26:00 AM
-- 在C#中使用OLEDB.NET数据提供程序通过Oracle存储过程填充数据集
发信人: Nineteen (-_-#!), 信区: DotNET 标 题: 在C#中使用OLEDB.NET数据提供程序通过Oracle存储过程填充数据集 发信站: BBS 水木清华站 (Fri Nov 7 08:26:15 2003), 转信 本文引用下面的 Microsoft .NET 框架类库名称空间: System.Data.OleDb 本任务的内容 概要 要求 在 Oracle 数据库中创建包的步骤 创建 Visual C# .NET 应用程序的步骤 参考 概要 本文演示如何使用 Oracle 存储过程产生的结果集填充 DataSet 对象。在使用 ADO.NET 支持断开连接的、分布式的数据方案时,DataSet(数据集)对象是关键所在。数据集是数据在内存中的表示形式,它提供了一致的关系编程模型,而不用关心数据源的位置。数据集表示完整的一组数据,包括相关的表、约束以及各表之间的关系。 返回页首 要求 下面的列表列出了推荐使用的硬件、软件、网络结构以及所需的 Service Pack: Microsoft Windows XP、Windows 2000 或 Windows NT 4.0 Service Pack 6a Microsoft Data Access Components (MDAC) 2.6 或更新版本 Oracle 8.0 Server 或更新版本 Microsoft Visual Studio .NET 安装在客户机上的 Oracle Client 本文假定您熟悉以下主题: Oracle 中的数据定义语言 (DDL) 查询 Visual C# .NET 语法 ActiveX 数据对象 (ADO) 返回页首 在 Oracle 数据库中创建包的步骤 使用以下代码创建名为 Person 的表: CREATE TABLE person (ssn NUMBER(9) PRIMARY KEY, fname VARCHAR2(15), lname VARCHAR2(20)); INSERT INTO person VALUES(555662222,'Sam','Goodwin'); INSERT INTO person VALUES(555882222,'Kent','Clark'); INSERT INTO person VALUES(666223333,'Sally','Burnett'); COMMIT; 使用以下代码创建包的头文件: CREATE OR REPLACE PACKAGE packperson AS TYPE tssn is TABLE of NUMBER(10) INDEX BY BINARY_INTEGER; TYPE tfname is TABLE of VARCHAR2(15) INDEX BY BINARY_INTEGER; TYPE tlname is TABLE of VARCHAR2(20) INDEX BY BINARY_INTEGER; PROCEDURE allperson (ssn OUT tssn, fname OUT tfname, lname OUT tlname); END packperson; / 使用以下代码创建包的主体: CREATE OR REPLACE PACKAGE BODY packperson AS PROCEDURE allperson (ssn OUT tssn, fname OUT tfname, lname OUT tlname) IS CURSOR person_cur IS SELECT ssn, fname, lname FROM person; percount NUMBER DEFAULT 1; BEGIN FOR singleperson IN person_cur LOOP ssn(percount) := singleperson.ssn; fname(percount) := singleperson.fname; lname(percount) := singleperson.lname; percount := percount + 1; END LOOP; END; END; / 返回页首 创建 Visual C# .NET 应用程序的步骤 新建一个 Visual C# Windows 应用程序项目。默认情况下会将 Form1 添加到项目中。 将 DataGrid 控件和一个 Button 控件拖到 Form1 上。DataGrid1 和 Button1 默认添加到 Form1。 将以下代码添加到代码窗口的第一行"using System.Data"之后: using System.Data.OleDb; 将以下代码添加到 Button1_Click 事件: OleDbConnection cnOra = new OleDbConnection("Provider=MSDAORA;Data Source=myOracleServer;" + "user id=myUID;password=myPWD;" + "persist security info=false;"); OleDbCommand cmdPerson = new OleDbCommand + ("{call PackPerson.allPerson({resultset 3, ssn, fname, lname})}", cnOra); OleDbDataAdapter daPerson = new OleDbDataAdapter(cmdPerson); cnOra.Open(); DataSet ds = new DataSet(); daPerson.Fill(ds,"Person"); this.dataGrid1.DataSource = ds.Tables["Person"]; cnOra.Close(); 按 F5 键生成并运行该应用程序。 单击 Button1。注意结果显示在 DataGrid 控件中。 备注:由于只有 Oracle 8.0 和更新版本支持结果集的检索和存储过程的执行,因此必须使用 Oracle 8. x 服务器运行此应用程序。 -- ——长夜漫漫,无心睡眠……难道狼妹妹也睡不着吗? ※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.206.3.3] 返回上一页 回到目录 回到页首 下一篇
|