科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在 Oracle 数据库上构建 .NET 应用程序(三)

在 Oracle 数据库上构建 .NET 应用程序(三)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

" department is in " + dr.GetString(2); } 上机操作 3(利用 DataReader 检索多列和多行)重点介绍了这些概念中的一部分。

作者:中国IT实验室 来源:中国IT实验室 2007年9月14日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

利用 DataReader 检索多个值


到目前为止,我们的示例仅说明了如何检索单个值。 DataReader 可以检索多列和多行的值。 首先进行多行、单列的查询:

select deptno, dname, loc from dept where deptno = 10
要获取列的值,可以使用以零为基数的序号或列名。 序号与查询中的顺序相关。 因而,可以在 VB.NET 中通过使用 dr.Item(2) 或 dr.Item("loc") 来查询 loc 列的值。

下面是将 dname 和来自上一查询的 loc 列串连起来的代码段:

Label1.Text = "The " + dr.Item(1) + " department is in " + dr.Item("loc") ' VB.NET
Label1.Text = "The " + dr.GetString(1) + " department is in " + dr.GetString(2); // C#
现在我们进行返回多行的查询:
select deptno, dname, loc from dept
要处理从 DataReader 中返回的多行,需要某种类型的循环结构。 此外,需要一个可以显示多行的控件。 DataReader 是一个仅正向的只读游标,因此不能将其与可更新或完全可滚动的控件(如 Windows Forms DataGrid 控件)捆绑在一起。 DataReader 与 ListBox 控件兼容,如以下代码段所示:
While dr.Read() ' VB.NET
   ListBox1.Items.Add("The " + dr.Item(1) + " department is in " + dr.Item("loc")) End While
while (dr.Read()) // C#
{
  listBox1.Items.Add("The " + dr.GetString(1) + " department is in " + dr.GetString(2);
}
上机操作 3(利用 DataReader 检索多列和多行)重点介绍了这些概念中的一部分。

总结

本文向您介绍了使用 VS.NET 编程语言访问 Oracle 数据库的过程。 您现在应该能够连接数据库并检索多列和多行。


John Paul Cook (johnpaulcook@email.com) 是居住在休斯顿的一位数据库和 .NET 顾问。 他撰写了许多关于 .NET、Oracle 和其他主题的文章,并从 1986 年以来一直开发关系数据库应用程序。他目前的兴趣包括 Visual Studio 2005 和 Oracle 10g。 他是 Oracle 认证 DBA 和 Microsoft MCSD for .NET。

上机操作 1: 从数据库中检索数据

  1. 首先向 Windows 表单添加一个按钮控件和一个标签控件。 务必在这些控件上方保留空间,以便在上机操作 2 中添加控件。

    图 8
    图 8: 在上机操作 1 中包含按钮和标签控件的表单

  2. 添加代码,它们用于从 Oracle 数据库中检索数据并在表单上显示结果。 将代码放在按钮的单击事件处理程序中。 开始这项任务的最容易的方式是双击该按钮,因为它将为事件处理程序创建一个 stub。

    图 9
    图 9: 单击事件处理程序 stub。

  3. 在 Public Class 声明之前添加 VB.NET Imports 语句,或在命名空间声明之前添加 C# using 语句。
    Imports System.Data              ' VB.NET
    Imports Oracle.DataAccess.Client ' ODP.NET Oracle managed provider
    using System.Data;              // C#
    using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
    
  4. 在 Private Sub 和 End Sub 语句之间添加 VB.NET 版本 事件语句代码(确保用您的服务器的主机名称替代 OTNSRVR):
    Dim oradb As String = "Data Source=(DESCRIPTION=(ADDRESS_LIST=" _
                        + "(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)))" _
                        + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _
                        + "User Id=scott;Password=tiger;"
    Dim conn As New OracleConnection(oradb) ' VB.NET
    conn.Open()
    Dim cmd As New OracleCommand
    cmd.Connection = conn
    cmd.CommandText = "select dname from dept where deptno = 10"
    cmd.CommandType = CommandType.Text
    Dim dr As OracleDataReader = cmd.ExecuteReader()
    dr.Read()
    Label1.Text = dr.Item("dname") ' or dr.Item(0)
    conn.Dispose()
    
    将以下 C# 代码添加到按钮的单击事件处理程序中的括号 { 和 } 之间,并确保用您的服务器的主机名称替代 OTNSRVR:
    string oradb = "Data Source=(DESCRIPTION=(ADDRESS_LIST="
       + "(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(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 dname from dept where deptno = 10";
    cmd.CommandType = CommandType.Text;
    OracleDataReader dr = cmd.ExecuteReader();
    dr.Read();
    label1.Text = dr.GetString(0);
    conn.Dispose();
    
  5. 运行应用程序。 单击按钮。 您将看到以下内容:

    图 10
    图 10: 成功检索到数据

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章