您的位置:首页 > 博客中心 > 数据库 >

在 Oracle 数据库上使用 Visual Studio 2005 或 2008 构建 .NET 应用程序 了解构建使用 Oracle 数据库的 .NET 应用程序所涉及到的基本但不可或缺的过程。

时间:2022-03-10 16:57

随着 Microsoft 的 .NET Framework 的日益流行,许多开发人员迫切想了解关于将 .NET 应用程序与 Oracle 集成的最佳方法的信息 — 不仅在基本连通性方面,还包括与使用 Visual Studio 2005 或 2008 进行有效应用程序开发的关系。

在本文中,我将说明构建使用 Oracle 数据库的 .NET 应用程序所涉及到的基本但不可或缺的过程,包括:

  • 如何添加工程引用,以在您的 .NET 工程中支持 Oracle 类
  • 如何创建 Oracle 数据库连接字符串
  • 如何使用 Connection、Command 和 DataReader 对象

您将有机会应用您在三个上机操作实践中学到的内容,难度从相对简单到比较复杂不等。本文中的屏幕快照出自 Visual Studio 2008,但体验与 Visual Studio 2005 中非常类似。

要获得关于如何保护应用程序的信息和实验,请参见我的文章“在 Oracle 数据库上保护 .NET 应用程序”。(另请参见 OTN 的 .NET 开发人员中心,以获取涉及许多 Oracle.NET 应用程序生命周期问题的技术文章)。

请注意,免费的 Oracle Developer Tools for Visual Studio(可从 OTN 下载)提供了一个 Visual Studio 插件,该插件可以简化 Oracle 上的 .NET 应用程序开发,并使之更加直观。但该主题超出了本文的讨论范畴。

.NET 数据提供程序

除了基本的 Oracle 客户端连通性软件,.NET 应用程序还需要使用称为 受管理的数据提供程序(其中“受管理的”指的是代码由 .NET 框架管理)的工具。数据提供程序是指 .NET 应用程序代码和 Oracle 客户端连通性软件之间这一层。在几乎所有情况下,最优的性能都是通过使用为特定数据库平台优化了的提供程序而不是一般的 .NET OLE DB 数据提供程序实现的。

Oracle、Microsoft 和第三方供应商都提供了针对 Oracle 产品进行了优化的 .NET 数据提供程序。Oracle 和 Microsoft 免费提供其 Oracle 数据提供程序。(Microsoft 为 .NET Framework 2.0 提供的提供程序包含在该框架中,但仍需安装 Oracle 客户端软件)。在本文中,我们将使用 Oracle Data Provider for .NET (ODP.NET),该提供程序包含在 Oracle 数据库中或单独提供下载。

ODP.NET 提供标准的 ADO.NET 数据访问,同时提供特定于 Oracle 数据库的特性,如 XML DB、数据访问性能优化以及真正应用集群连接池。

安装 ODP.NET 和 Oracle 客户端软件后,即可开始使用 Visual Studio 进行应用程序开发。在开始开发前,请先确认客户端连通性。如果您在 VS.NET 所在的计算机上能够使用 Oracle 客户端软件(如 SQL*Plus)连接到 Oracle,则证明您已经正确地安装和配置了 Oracle 客户端软件。

如果您是初次接触 Oracle,请参见 Oracle 数据库两日速成开发人员指南 中的“安装 .NET 产品”一节,其中专门介绍了有关安装和配置 ODP.NET 的背景信息;或参见 Oracle 数据库文档库,以了解有关 Oracle 数据库的一般信息。

在 Visual Studio 2005 或 2008 中创建工程

现在我们来创建一个用于从 Oracle 数据库中检索数据的 ODP.NET 应用程序。然后,我们将了解如何使用 ODP.NET 执行错误处理,以及如何处理其他数据检索情况。

在启动 Visual Studio 之后,第一个任务是创建一个工程。可以按如下所示选择 File | New | Project,也可以单击 File 正下方的 New Project 按钮。

gxlsystem.com,布布扣
图 14 添加了 ListBox 的表单

  • 从查询中删除 where 子句,并添加以下列:
    cmd.CommandText = "select deptno, dname, loc from dept" ‘ Visual Basic
    
    cmd.CommandText = "select deptno, dname, loc from dept"; // C#
    
  • 将在 while 循环中读取查询结果并用其填充 ListBox 控件。按如下所示修改 Visual Basic 代码:
    Dim oradb As String = "Data Source=(DESCRIPTION=(ADDRESS_LIST=" _
                + "(ADDRESS=(PROTOCOL=TCP)(HOST=ORASRVR)(PORT=1521)))" _
                + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _
                + "User Id=scott;Password=tiger;"
    
    Dim conn As New OracleConnection(oradb) ‘ Visual Basic
    conn.Open()
    
    Dim cmd As New OracleCommand
    cmd.Connection = conn
    cmd.CommandText = "select deptno, dname, loc from dept"
    cmd.CommandType = CommandType.Text
    
    Dim dr As OracleDataReader = cmd.ExecuteReader()
    While dr.Read()
        ListBox1.Items.Add("The " + dr.Item("dname") + _
                           " department is in " + dr.Item("loc"))
    End While
    
    dr.Dispose()
    cmd.Dispose()
    conn.Dispose()
    Modify your C# code to look like this: 
    string oradb = "Data Source=(DESCRIPTION=(ADDRESS_LIST="
                    + "(ADDRESS=(PROTOCOL=TCP)(HOST=ORASRVR)(PORT=1521)))"
                    + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));"
                    + "User Id=scott;Password=tiger;";
    
    OracleConnection conn = new OracleConnection(oradb); // C#
    conn.Open();
    
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "select deptno, dname, loc from dept";
    cmd.CommandType = CommandType.Text;
    
    OracleDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
       listBox1.Items.Add("The " + dr["dname"].ToString() +
                          " department is in " + dr["loc"].ToString());
    }
    
    dr.Dispose();
    cmd.Dispose();
    conn.Dispose();
    
  • 运行应用程序。ListBox 中应该填充了 DEPT 表中的所有部门名称和位置。供下载的代码中已经具备了错误处理功能。
  • 在 Oracle 数据库上使用 Visual Studio 2005 或 2008 构建 .NET 应用程序 了解构建使用 Oracle 数据库的 .NET 应用程序所涉及到的基本但不可或缺的过程。,布布扣,bubuko.com

    热门排行

    今日推荐

    热门手游