本教程说明如何构建使用 Oracle Data Provider for .NET 访问 Oracle 数据库中数据的 .NET 应用程序。
大约 30 分钟
本教程包括下列主题:
| 概述 | ||
| 在 Visual Studio .NET 中创建项目 | ||
| 添加引用 | ||
| 从数据库中检索数据 | ||
| 合并交互式控件 | ||
| 添加错误处理 | ||
| 检索多列和多行 | ||
| 总结 | ||
将鼠标置于此图标上可以加载和查看本教程的所有屏幕截图。
(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注意:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
除了基本的 Oracle 客户端连通性软件,.NET 应用程序还需要使用称为受管理的数据提供程序(其中“受管理的”指的是代码由 .NET 框架管理)的工具。数据提供程序是指 .NET 应用程序代码和 Oracle 客户端连通性软件之间这一层。
Oracle Data Provider for .NET (ODP.NET) 是 Oracle 的高性能 ADO.NET 2.0 兼容数据提供程序,展示了一整套特定于 Oracle 的特性和优化选项,包括支持真正应用程序集群、XML DB 和高级安全性。通过 Oracle 技术网网站可以免费下载该程序。
当安装了 ODP.NET 和所有要求的 Oracle 客户端连通性软件时,就可以开始使用 Visual Studio 进行应用程序开发了。在开始开发前,请先确认客户端连通性。如果您在 VS.NET 所在的计算机上使用 SQL*Plus 能够与 Oracle 连接,那么证明您已经正确地安装和配置了 Oracle 客户端软件。
如果您刚接触 Oracle,那么请参见 Oracle Data Provider for .NET 开发人员指南 10g 中的“与 Oracle 数据库连接”部分,来具体了解有关 ODP.NET 的背景信息,或参见 Oracle 数据库管理员指南 10g 获得管理 Oracle 数据库的一般信息。您还可以查阅“使用 ODP.NET 与 Oracle 数据库连接”示例代码“方法”文档。
现在您可以新建一个项目。执行以下步骤:
| 1. | 在 Create 旁边的 Recent Projects 区域中:选择 Project。
|
|
| 2. | 接受默认的项目类型 Visual C#:Windows,选择模板 Windows Application,在 Name 中输入 OraWinApp 并在位置字段中输入存储文件的目录(注意:如果该目录不存在,将创建该目录)。然后单击 OK。
|
|
| 3. | 项目创建成功。从 View 菜单打开 Solution Explorer 视图(如果尚未打开)。
|
|
因为项目必须与 Oracle 数据库连接,因此必须添加一个到包含数据提供程序的 dll 的引用。执行以下步骤:
| 1. | 选择 Project > Add Reference...
|
| 2. | 向下滚动 References 列表,选择 Oracle.DataAccess 并单击 OK。
|
要从数据库中检索数据,可以在表单中添加一些控件。执行以下步骤:
| 1. | 从菜单栏单击 View,从下拉菜单中选择 Toolbox 或者将光标放到 Toolbox 以查看菜单并展开 Common Controls。
|
| 2. | 选择 Button 控件,并将其拖到表单画布中。
|
| 3. | 该控件在画布上显示。您还需要创建一个 Label。
|
| 4. | 再次打开 Toolbox 并将 Label 控件拖放到画布中。
|
| 5. | 双击 button 打开代码窗口。
|
| 6. | 在 Public Class 声明之前添加 C# using 语句。 using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider using Oracle.DataAccess.Types;
|
| 7. | 在 private void button1_Click(object sender, EventArgs e) string oradb = "Data Source=ORCL;User Id=hr;Password=hr;"; OracleConnection conn = new OracleConnection(oradb); // C#
|
| 8. | 选择 Build > Build Solution。
|
| 9. | 项目已成功构建。现在可以运行表单了。
|
| 10. | 选择 Debug > Start Without Debugging。
|
| 11. | 显示表单。单击 Button1。
|
| 12. | 标签中显示结果。由于代码中的查询要显示部门 ID 为 10 的部门名称,因此结果是管理部门。关闭 Form1。
|
与运行硬编码的查询不同,可以添加一个文本框控件来接收用户输入的部门 ID。执行以下步骤:
| 1. | 选择 Form1.cs [Design] 选项卡。选择 Toolbox,然后单击 TextBox 控件并将其拖到画布中。
|
| 2. | 文本框随即显示。您可以将其拖到所需的位置。
|
| 3. | 再次选择 Toolbox 并将 Label 控件拖放到画布中。
|
| 4. | 随即显示标签。右键单击 Label2,然后选择 Properties。
|
| 5. | 将 Text 更改为 Enter Department ID:
|
| 6. | 选择 Form1.cs 代码选项卡。
|
| 7. | 使用绑定变量在 SELECT 语句中包括文本框的值。利用绑定变量,数据库不必在每次文本框值发生更改时都重新分析 SQL 语句,从而可以提高性能。紧跟 conn.Open() statement: 之后添加以下代码: OracleParameter parm = new OracleParameter();
|
| 8. | 紧跟 cmd.Connection 语句之后添加 cmd.Parameters 语句: cmd.Parameters.Add(parm);
|
| 9. | 将 cmd.CommandText 语句的代码更改为: cmd.CommandText = "select department_name from departments where department_id = :1";
|
| 10. | 选择 Build > Rebuild Solution。
|
| 11. | 选择 Debug > Start Without Debugging。
|
| 12. | 在 Department ID 中输入 20,然后单击 Button1。
|
| 13. | 注意,Label1 更改为部门的名称。该值取决于在 Department ID 字段中输入的内容。
|
| 14. | 在 Department ID 中输入 300,然后单击 Button1。
|
| 15. | 这一次您将收到一条错误,因为没有 ID 为 300 的部门。单击 Quit。在下一个主题中添加一些错误处理以便了解收到错误的确切原因。
|
错误处理用以指导用户找出某些内容无法正常工作的原因。在该主题中,您将修改代码以阻止在输入了无效的部门 ID 后出现错误。在该教程中,您将添加一些非常简单的错误处理代码。要获得更强健的错误处理,应该使用结构化异常处理。有关 ODP.NET 结构化异常处理的详细信息,请参考 ODP.NET 在线文档。执行以下步骤:
| 1. | 在 Form1.cs 代码中,将以下代码由 dr.Read(); 更改为 if (dr.Read())
|
| 2. | 选择 Build > Rebuild Solution。
|
| 3. | 选择 Debug > Start Without Debugging。
|
| 4. | 再次在 Department ID 中输入 300,然后单击 Button1。
|
| 5. | 这一次,将显示 Department ID is not found 消息。关闭 Form1。
|
在该主题中,您要使用列表框检索多个信息集。执行以下步骤:
| 1. | 单击 Form1.cs [Design] 选项卡。选择 Toolbox 并将 Listbox 控件拖放到画布中。
|
| 2. | 表单上显示新的列表框。单击 Form1.cs 代码选项卡。
|
| 3. | 删除 cmd.Parameters.Add(parm); 语句。
|
| 3. | 将 cmd.CommandText 代码由 cmd.CommandText = "select department_name from departments where department_id = :1"; 更改为 cmd.CommandText = "select department_id, department_name, city"
+ " from departments d, locations l"
|
| 4. | 此外,将以下代码行由 if (dr.Read()) 更改为 while (dr.Read())
{
listBox1.Items.Add("The " + dr.GetString(1) +
" department is in " + dr.GetString(2));
}
|
| 5. | 选择 Build > Rebuild Solution。
|
| 6. | 选择 Debug > Start Without Debugging。
|
| 7. | 单击 Button1。
|
| 8. | 将显示部门列表。
|
在本教程中,您学习了如何:
| 将连接添加到数据库中 | ||
| 创建项目并添加引用 | ||
| 从数据库中检索数据 | ||
| 合并交互式控件和错误处理 | ||
| 检索多列和多行 | ||