科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

上机操作 2: 增加交互性 现在在代码中实施了数据库访问的基础,下一步是为应用程序增加交互性。 可以添加一个文本框来接收用户输入的部门号码 (deptno),而不是运行硬编码的查询。

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

关键字: ORACLE

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


 

上机操作 2: 增加交互性

现在在代码中实施了数据库访问的基础,下一步是为应用程序增加交互性。 可以添加一个文本框来接收用户输入的部门号码 (deptno),而不是运行硬编码的查询。

  1. 向表单中添加一个文本框控件和另一个标签控件(如下所示): 将 Label2 控件的文本属性设为 Enter Deptno: 并确保没有将 TextBox1 的 Text 属性设为任何东西。

    图 11
    图 11: 包含按钮和标签控件的表单(上机操作 2 )

  2. 修改定义选择字符串的代码:
    cmd.CommandText = "select dname from dept where deptno = " + TextBox1.Text 'VB.NET
    cmd.CommandText = "select dname from dept where deptno = " + textBox1.Text; // C#
    
  3. 运行应用程序。 在 deptno 输入 10,测试应用程序。 输入一个无效的 deptno(例如 50),重新测试应用程序。 应用程序将退出。

    图 12
    图 12: 一个未处理的异常

  4. 修改代码以防止在输入无效的 deptno 时出现错误。 让我们回顾一下,ExecuteReader 方法实际返回一个对象。
    If dr.Read() Then ' VB.NET
        Label1.Text = dr.Item("dname")
    Else
        Label1.Text = "deptno not found"
    End If
    if (dr.Read()) // C#
    {
        label1.Text = dr.Item("dname");
    }
    Else
    {
        label1.Text = "deptno not found";
    }
    
  5. 输入不存在的 deptno 数字,测试应用程序。 现在应用程序不再退出。 输入字母 A 代替数字,然后单击按钮。 应用程序退出。 很明显,我们的应用程序需要更好的方法以处理错误。

    可能有人会指出,应用程序应当不充许用户进行将导致错误的无效输入,但最终应用程序必须添加强健的错误处理功能。 不是所有的错误都是可预防的,因此必须实施错误处理。

上机操作 3: 利用 DataReader 检索多行和多列

现在检索了单个值,下一步就是利用 DataReader 检索多行和多列。 添加一个 ListBox 控件到表单中,以显示结果。
  1. 添加一个 ListBox 控件到表单中。 重新调整控件的大小,以填满表单的大部分宽度(如下所示)。

    图 13
    图 13: 添加了 ListBox 的表单

  2. 从查询中删除 where 子句,并添加以下列:
    cmd.CommandText = "select deptno, dname, loc from dept" ' VB.NET
    cmd.CommandText = "select deptno, dname, loc from dept"; // C#
    
  3. 修改 VB.NET 代码,最终结果如下:
    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 deptno, dname, loc from dept" 
    cmd.CommandType = CommandType.Text
    Dim dr As OracleDataReader = cmd.ExecuteReader()
    While dr.Read()
        ListBox1.Items.Add("The " + dr.Item(1) + _
    " department is in " + dr.Item("loc"))
    End While
    conn.Dispose()
    
    修改您的 C# 代码,最终结果如下:
    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();
    while (dr.Read())
    {
       ListBox1.Items.Add("The " + dr.Item(1) +
                          " department is in " + dr.GetString(0));
    }
    conn.Dispose(); 
          
提供代码下载中已经实施了错误处理。

查看本文来源

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

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

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