以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  在C#中使用OLEDB.NET数据提供程序通过Oracle存储过程填充数据集  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11805)


--  作者: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]
返回上一页
回到目录
回到页首
下一篇



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms